On Feb 24, 2014, at 11:33 PM, John E. Malmberg <malmb...@encompasserve.org> 
wrote:


> I can not seem to do a rmdir() of an absolute or relative Unix path with Perl 
> 5.18.1.

It works unless DECC$FILENAME_UNIX_REPORT is defined.  That's not particularly 
well tested and you definitely found a bug.  If that's defined, when rmdir 
calls the internal stat routine, which calls fileify, then 'abc/xyz' becomes 
'abc/xyz.DIR;1'.  Then stat converts it to VMS format and we get something like 
'D0:[craig.TEST.abc]xyz.DIR^;1'.

So we probably need to have fileify omit the version with unix report enabled.

> I have worked around the issue by replacing the rmdir() builtin method with 
> one that translates the filename to VMS format and then calls unlink().
> 
> LION> perl  --version
> 
> This is perl 5, version 18, subversion 1 (v5.18.1) built for VMS_IA64
> 
> LION> show log decc$*
> 
> (LNM$PROCESS_TABLE)
> 
>  "DECC$EFS_CASE_PRESERVE" = "ENABLE"
>  "DECC$EFS_CHARSET" = "ENABLE"

For future reference, those two are on by default in Perl 5.18.x.

>  "DECC$FILENAME_UNIX_NOVERSION" = "ENABLE"
>  "DECC$FILENAME_UNIX_REPORT" = "ENABLE"
>  "DECC$READDIR_DROPDOTNOTYPE" = "ENABLE"
> 
> LION> show log perl_*
> 
> (LNM$PROCESS_TABLE)
> 
>  "PERL_ROOT" = "LION$DKA0:[SYS0.SYSCOMMON.perl-5_18.]"
> 
> 
> I also noticed that opendir('/search_list/directory') fails when 'directory' 
> is only in the first member of the search list.  I am not sure what the issue 
> there is.  I think the solution for that will be more complex.

Not sure what's going on there but I'll try to have a look soonish.

> I have worked around that issue by decoding the search list and recreating 
> the path to used for opendir.
> 



________________________________________
Craig A. Berry
mailto:craigbe...@mac.com

"... getting out of a sonnet is much more
 difficult than getting in."
                 Brad Leithauser

Reply via email to