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.

Reply via email to