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