Andrew Black wrote:
Craig A. Berry wrote:
At 9:57 AM +0000 2/28/07, Andrew Black (delete obvious bit) wrote:
Hi
A quick progress report. I worked out roughly what is going on but hadnt
had time to write up in more detail. I am now on holiday and don't have
access to the machine at work.


It is doing funny things with path names. I have added some diagnostics and it is trying to add .exe to perl.;1
The regexp seems to handle the ;1 but not the .;1

******* $thisperl=disk:[scratch.perl595.][t]perl.;1
******* $thisperl becomes disk:[scratch.perl595.][t]perl.;1.exe

print STDERR "******* \$thisperl=$thisperl\n" ;
    if ($proto->os_type eq 'VMS') {
      # VMS might have a file version at the end
      $thisperl .= $exe unless $thisperl =~ m/$exe(;\d+)?$/i;
    } elsif (defined $exe) {
      $thisperl .= $exe unless $thisperl =~ m/$exe$/i;
    }
print STDERR "******* \$thisperl becomes $thisperl\n" ;

VMS does not enforce executables having .EXE extensions.

The test harness for VMS runs a perl binary with the name "dev:[dirs]PERL." or "/dev/dirs/perl" which the above code will not handle.

The trailing period on the filename is significant for the VMS format and should not be present for the UNIX format. In VMS format, it indicates that there is no file type present, so not to assume a default extension of .EXE .

The above code appears to be wrong in that if the image name for the running perl does not have a .EXE extension, it will always generate the wrong answer, and will only work the existing image has the .EXE extension, where the above code is not even needed.

I can not test this right now, but I suspect if you remove the VMS specific code above, then it should just work for all cases on VMS.

On VMS the image name returned by $X will always be usable as-is and never needs a .EXE appended to it.

-John
[EMAIL PROTECTED]
Personal Opinion Only

Reply via email to