| 1 |
root |
1.1 |
package blib; |
| 2 |
|
|
|
| 3 |
|
|
=head1 NAME |
| 4 |
|
|
|
| 5 |
|
|
blib - Use MakeMaker's uninstalled version of a package |
| 6 |
|
|
|
| 7 |
|
|
=head1 SYNOPSIS |
| 8 |
|
|
|
| 9 |
|
|
perl -Mblib script [args...] |
| 10 |
|
|
|
| 11 |
|
|
perl -Mblib=dir script [args...] |
| 12 |
|
|
|
| 13 |
|
|
=head1 DESCRIPTION |
| 14 |
|
|
|
| 15 |
|
|
Looks for MakeMaker-like I<'blib'> directory structure starting in |
| 16 |
|
|
I<dir> (or current directory) and working back up to five levels of '..'. |
| 17 |
|
|
|
| 18 |
|
|
Intended for use on command line with B<-M> option as a way of testing |
| 19 |
|
|
arbitary scripts against an uninstalled version of a package. |
| 20 |
|
|
|
| 21 |
|
|
However it is possible to : |
| 22 |
|
|
|
| 23 |
|
|
use blib; |
| 24 |
|
|
or |
| 25 |
|
|
use blib '..'; |
| 26 |
|
|
|
| 27 |
|
|
etc. if you really must. |
| 28 |
|
|
|
| 29 |
|
|
=head1 BUGS |
| 30 |
|
|
|
| 31 |
|
|
Pollutes global name space for development only task. |
| 32 |
|
|
|
| 33 |
|
|
=head1 AUTHOR |
| 34 |
|
|
|
| 35 |
|
|
Nick Ing-Simmons nik@tiuk.ti.com |
| 36 |
|
|
|
| 37 |
|
|
=cut |
| 38 |
|
|
|
| 39 |
|
|
use Cwd; |
| 40 |
|
|
use File::Spec; |
| 41 |
|
|
|
| 42 |
|
|
use vars qw($VERSION $Verbose); |
| 43 |
|
|
$VERSION = '1.02'; |
| 44 |
|
|
$Verbose = 0; |
| 45 |
|
|
|
| 46 |
|
|
sub import |
| 47 |
|
|
{ |
| 48 |
|
|
my $package = shift; |
| 49 |
|
|
my $dir = getcwd; |
| 50 |
|
|
if ($^O eq 'VMS') { ($dir = VMS::Filespec::unixify($dir)) =~ s-/\z--; } |
| 51 |
|
|
if (@_) |
| 52 |
|
|
{ |
| 53 |
|
|
$dir = shift; |
| 54 |
|
|
$dir =~ s/blib\z//; |
| 55 |
|
|
$dir =~ s,/+\z,,; |
| 56 |
|
|
$dir = File::Spec->curdir unless ($dir); |
| 57 |
|
|
die "$dir is not a directory\n" unless (-d $dir); |
| 58 |
|
|
} |
| 59 |
|
|
my $i = 5; |
| 60 |
|
|
my($blib, $blib_lib, $blib_arch); |
| 61 |
|
|
while ($i--) |
| 62 |
|
|
{ |
| 63 |
|
|
$blib = File::Spec->catdir($dir, "blib"); |
| 64 |
|
|
$blib_lib = File::Spec->catdir($blib, "lib"); |
| 65 |
|
|
|
| 66 |
|
|
if ($^O eq 'MacOS') |
| 67 |
|
|
{ |
| 68 |
|
|
$blib_arch = File::Spec->catdir($blib_lib, $MacPerl::Architecture); |
| 69 |
|
|
} |
| 70 |
|
|
else |
| 71 |
|
|
{ |
| 72 |
|
|
$blib_arch = File::Spec->catdir($blib, "arch"); |
| 73 |
|
|
} |
| 74 |
|
|
|
| 75 |
|
|
if (-d $blib && -d $blib_arch && -d $blib_lib) |
| 76 |
|
|
{ |
| 77 |
|
|
unshift(@INC,$blib_arch,$blib_lib); |
| 78 |
|
|
warn "Using $blib\n" if $Verbose; |
| 79 |
|
|
return; |
| 80 |
|
|
} |
| 81 |
|
|
$dir = File::Spec->catdir($dir, File::Spec->updir); |
| 82 |
|
|
} |
| 83 |
|
|
die "Cannot find blib even in $dir\n"; |
| 84 |
|
|
} |
| 85 |
|
|
|
| 86 |
|
|
1; |