John E. Malmberg wrote:
> I am still working out how to do the fix for this, but I have
> runthrough.t failing only one test.
>
> Part of the problem has turned out to be that base.pm is using C<qr{}>
> to build patterns for finding files.
>
> This causes a case sensitive search for files.
>
> It is specifically searching for '.PL' files, and by default, Perl on
> VMS returns all filenames in lower case, so this never matches.
>
> The regex needs to be set to case insensitive when
> File::Spec->case_tolerant is one.
>
> It looks like there are several instances of this, but in the other
> cases, the filename portions of the patterns are in lower case.
>
> I have not yet figured out how to make the regex conditionally case
> insensitive, and if there are additional problems beyond that.
How about:
sub _find_PL_regex {
return File::Spec->case_tolerant ? qr{\.PL$}i : qr{\.PL$};
}
FWIW MakeMaker does it like this:
} elsif ($name =~ /\.PL\z/) {
($pl_files{$name} = $name) =~ s/\.PL\z// ;
} elsif (($Is_VMS || $Is_Dos) && $name =~ /[._]pl$/i) {
# case-insensitive filesystem, one dot per name, so foo.h.PL
# under Unix appears as foo.h_pl under VMS or fooh.pl on Dos
local($/); open(PL,$name); my $txt = <PL>; close PL;
if ($txt =~ /Extracting \S+ \(with variable substitutions/) {
($pl_files{$name} = $name) =~ s/[._]pl\z//i ;
}
else {
$pm{$name} = $self->catfile($self->{INST_LIBDIR},$name);
}
} elsif ($name =~ /\.(p[ml]|pod)\z/){
$pm{$name} = $self->catfile($self->{INST_LIBDIR},$name);
}
Don't do that.
--
I have a date with some giant cartoon robots and booze.