On Wednesday, April 11, 2007, at 09:48AM, "John E. Malmberg" <[EMAIL PROTECTED]> wrote: >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.
True, but flouting the convention does seem like asking for trouble. >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. It doesn't anymore. It used to, probably because a hundred years ago there were things in the test suite that depended on finding a file named simply "perl" in the t directory, but the test infrastructure is much better now, and there was no good reason I could think of not to follow the local convention, so we now keep the extension when we copy the executable to [.t]. > >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. It doesn't. The code to paste on an extension could probably be made better but isn't a priority. >On VMS the image name returned by $X will always be usable as-is and >never needs a .EXE appended to it. The code in question is a fallback and is only used if two or three other methods for locating Perl fail. The first thing it tries is $^X and checks if it's considered an absolute file spec. It clearly is, so why that didn't work is of more interest than any discussions of extension pasting.