Module-Which
view release on metacpan or search on metacpan
lib/Module/Which/P5Path.pm view on Meta::CPAN
$p5path = path_to_p5path($path)
$p5path = path_to_p5path($path, install_vars => $arrayref)
Resolves an ordinary path to a p5-path. This is done
by trying to match C<$Config{$ivar}> to the start of
the path for each $ivar on
a list of C<Config> variables (named installation variables
due to their relation to Perl 5 installation paths).
At the first match, it replaces the prefix with
C<"\$\{$ivar\}">.
The list of C<Config> variables is given by the array ref
given by option I<install_vars> or by a reference to
the package variable
C<@Module::Which::P5Path::DEFAULT_IVARS> which holds
installarchlib archlib installprivlib privlib
installsitearch installsitelib sitelib sitelib_stem
installvendorarch installvendorlib vendorlib vendorlib_stem
in this order.
This function is smart enough to discount
case-tolerance of certain filesystems when trying to
match a prefix to a path.
=item B<path_to_p5>
$p5path = path_to_p5($path)
($p5path, $p5base) = path_to_p5($path)
Works just like C<path_to_p5path> but, in list context,
returns also the p5-base. For example, given
C<$Config{installarchlib} eq '/usr/local/lib/perl5'>,
($p5path, $p5base) = path_to_p5('/usr/local/lib/perl5/M.pm')
assigns C<'${installarchlib}/M.pm'> to C<$p5path> and
C<'${installarchlib}/'> to C<$p5base>. Beware of this behavior
when calling functions that are not prototyped
and list operators.
print "p5-path: ", path_to_p5('/usr/local/lib/perl5/M.pm'), "\n"
prints C<"p5-path: ${installarchlib}/M.pm${installarchlib}/">
rather than C<"p5-path: ${installarchlib}/M.pm"> that would be
generated by
print "p5-path: ", scalar path_to_p5('/usr/local/lib/perl5/M.pm'), "\n"
=back
=begin comment
SAMPLES
Cygwin ---------------
$ perl -v
This is perl, v5.8.6 built for cygwin-thread-multi-64int
$ perl -e '$" = "\n"; print "@INC"'
/usr/lib/perl5/5.8/cygwin
/usr/lib/perl5/5.8
/usr/lib/perl5/site_perl/5.8/cygwin
/usr/lib/perl5/site_perl/5.8
/usr/lib/perl5/site_perl/5.8
/usr/lib/perl5/vendor_perl/5.8/cygwin
/usr/lib/perl5/vendor_perl/5.8
/usr/lib/perl5/vendor_perl/5.8
Linux ----------------
# perl -v
This is perl, version 5.005_03 built for i386-linux
# perl -e '$" = "\n"; print "@INC"'
/usr/lib/perl5/i386-linux
/usr/lib/perl5
/usr/lib/perl5/site_perl/i386-linux
/usr/lib/perl5/site_perl
HP-UX ----------------
r11:/u01/r11>/usr/local/bin/perl -v
This is perl, v5.8.3 built for PA-RISC2.0
r11:/u01/r11>/usr/local/bin/perl -e '$" = "\n"; print "@INC"'
/usr/local/lib/perl5/5.8.3/PA-RISC2.0 [installarchlib]
/usr/local/lib/perl5/5.8.3 [installprivlib]
/usr/local/lib/perl5/site_perl/5.8.3/PA-RISC2.0 [installsitearch]
/usr/local/lib/perl5/site_perl/5.8.3 [installsitelib]
/usr/local/lib/perl5/site_perl
# arch priv site vendor
qw(installarchlib archlib installprivlib privlib installsitelib sitelib installvendorlib vendorlib)
r11:/u01/r11>/usr/local/bin/perl -V:inst.*
installarchlib='/usr/local/lib/perl5/5.8.3/PA-RISC2.0'
installprivlib='/usr/local/lib/perl5/5.8.3'
installprefix='/usr/local'
installprefixexp='/usr/local'
installscript='/usr/local/bin'
installsitearch='/usr/local/lib/perl5/site_perl/5.8.3/PA-RISC2.0'
installsitelib='/usr/local/lib/perl5/site_perl/5.8.3'
installsitescript='/usr/local/bin'
installstyle='lib/perl5'
installusrbinperl='undef'
installvendorarch=''
installvendorlib=''
installvendorscript=''
===
>perl -v
This is perl, version 4.0
> perl -e '$" = "\n"; print "@INC"'
/usr/local/lib/perl
====
> perl -v
This is perl, version 5.003 with EMBED
r11:/u01/r11>/u01/app/oracle/product/8.0.6/ows/3.0/perl/bin/perl -e '$" = "\n"; print "@INC"'
/mnt/was302/SRC/exp/cartxs/src/perl/lib/PA-RISC/5.003
/mnt/was302/SRC/exp/cartxs/src/perl/lib
/mnt/was302/SRC/exp/cartxs/src/perl/lib/site_perl/PA-RISC
/mnt/was302/SRC/exp/cartxs/src/perl/lib/site_perl
Windows ------------------
>perl -e "$\" = qq{\n}; print qq{@INC}"
C:/tools/PXPerl/lib
C:/tools/PXPerl/site/lib
>perl -e "$\" = qq{\n}; print qq{@INC}"
c:/tools/Perl/lib
c:/tools/Perl/site/lib
=end comment
( run in 0.766 second using v1.01-cache-2.11-cpan-39bf76dae61 )