On Sep 22, 5:29 am, [EMAIL PROTECTED] (John E. Malmberg) wrote: > Craig A. Berry wrote: > > At 7:49 PM -0500 9/20/07, John E. Malmberg wrote: > > >>Peter (Stig) Edwards wrote: > > >>>Content of > >>> http://rt.cpan.org//Ticket/Display.html?id=29513 > >>>below: > > >>>Hello and thanks for maintaining PathTools. > > >>>The question/bug I have is: > >>>"What should File::Spec->canonpath() return?" > > >>>On VMS (PathTools 3.17 and 3.25) I get undef: > > >>>perl -e "use strict;use warnings;use File::Spec;print defined > >>>File::Spec->canonpath() ? 'def' : 'undef';" > >>>undef > > >>>On UNIX (PathTools 3.23) I get empty string: > > >>>perl -e "use strict;use warnings;use File::Spec;print defined > >>>File::Spec->canonpath() ? 'def' : 'undef';" > >>>def > > >>I would expect C<canonpath(undef)> to behave the same for both. > > > Agreed. > > >> There is a problem on VMS if File::Spec->canonpath(undef) returns > >> '', as VMS will treat '' 'as SYS$DISK:[].;' which is likely to cause > > >> hard to detect problems, > > > > > Uh, what? A return statement that looks like C<return '';> does not > > return a string containing two single quote characters; it returns a > > zero-length string. I must be missing what you're saying somehow. > > Yes. What Peter is reporting is that File::Spec->canopath(undef) on VMS > currently returns C<undef>. > > On UNIX it is returning C<''> or the zero length string. > > A VMS file create of C<''> or a zero length string will succeed and > create a file with the name C<SYS$DISK[].;>, which is probably not desired. > > So that is why I have the opinion that the current VMS behavior of > File::Spec->canonpath(undef) is more correct than the current UNIX > behavior, because it makes the error condition visible. > > Having File::Spec->canonpath(undef) return C<undef> just seems logical, > and since both '' and undef will probably cause error conditions on UNIX. > > -John- Hide quoted text - > > - Show quoted text -
Thanks for your thoughts and information, I'll add to this patch: http://rt.cpan.org/Ticket/Display.html?id=29492 a patch that stops File::Spec->catdir() being called on files on VMS. Peter (Stig) Edwards