perl - finding files that don't exist?
Reini Urban
rurban@x-ray.at
Wed Aug 13 18:15:00 GMT 2008
Larry Hall (Cygwin) schrieb:
> Paul Mallas wrote:
>> I am not sure where this issue should sits - is it a perl problem or a
>> cygwin problem or windows? Not sure - but I have noticed just after
>> cygwin upgrade.
>>
>> Perl seems to be finding files that don't exist:
>>
>> $ ls -a
>> ./ ../ Babel.pm
>>
>> $ perl -e 'print (-f "./PRN.pm")'
>> 1
>>
>> $ perl -e 'print (-e "./PRN.pm")'
>> 1
>>
>> $ perl -e 'print (-e "./PR.pm")'
>>
>>
>> PRN.pm is reserved device in windows. You can't create a file with
>> this name in WinXP. But perl says the file exists now and it did not
>> seem to exhibit this behaviour before.
>
> <http://cygwin.com/cygwin-ug-net/using-specialnames.html#id318040>
>
> Cygwin has always recognized these devices because the underlying Windows
> APIs do. Try "ls PRN" anywhere.
And "ls PRN.pm" has the same problem. With cygwin-1.5 and earlier only.
cygwin stat() is the problem, not perl.
Try "strace ls PRN.pm"
and see
fhandler_base::open_9x: 0xFFFFFFFF = CreateFile (C:\<path>\PRN.pm,
0x80000000, 0x7, 0x22C540, 0x3, 0x2000080, 0)
1.7 will work okay in this regard.
ls PRN.pm
ls: cannot access PRN.pm: No such file or directory
It will not use the old CreateFile() for stat(), but the Win95
incompatible Nt... variants
with \??\C:\<path>\PRN.pm
--
Reini Urban
http://phpwiki.org/ http://murbreak.at/
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
More information about the Cygwin
mailing list