http://qs1969.pair.com?node_id=575556


in reply to File::Spec bug on VMS

So, after too much time stepping through with the debugger...

There is a bug in the function unixify (in VMS::Filespec). A control character is added to the end of certain length paths:
47: my($npath) = unixify($path); DB<7> x $path 0 '[DIR.aaaaa]' DB<8> s File::Spec::VMS::eliminate_macros(/perl_root/lib/File/Spec/VMS.pm:48): 48: my($complex) = 0; DB<8> x $npath 0 "/USERS/DIR/aaaaa\c@" # <---- What's that \c@ doing there?!
As opposed to
47: my($npath) = unixify($path); DB<9> x $path 0 '[DIR.aaaaaaa]' DB<10> s File::Spec::VMS::eliminate_macros(/perl_root/lib/File/Spec/VMS.pm:48): 48: my($complex) = 0; DB<10> x $npath 0 '/USERS/DIR/aaaaaaa/'

I don't know how to solve this, but as a workaround, if you always pass the device name to the catfile function, it works. So do this:
print File::Spec->catfile("USERS:[DIR.aaaaa]", "file"); # Include USER +S:, or else this won't work!

Replies are listed 'Best First'.
Re^2: File::Spec bug on VMS (rt)
by tye (Sage) on Sep 29, 2006 at 20:08 UTC

    Thanks for finding this and narrowing it down. Please report it to http://rt.perl.org/perlbug/ (or by going to the distribution that contains VMS::Filespec and following the "View/Report Bugs" link).

    - tye