diff options
author | Nick Ing-Simmons <nick@ni-s.u-net.com> | 1996-11-23 09:17:40 +0000 |
---|---|---|
committer | Chip Salzenberg <chip@atlantic.net> | 1996-11-26 20:48:00 +1200 |
commit | be9cdb876bca65c372096fa7626a5a9897471b1d (patch) | |
tree | c7b3e1fa97ef817258da64ca4b186f1a52f744e8 | |
parent | 93be69de7b7f75290f584f5b2d24cdcf0dd72c74 (diff) | |
download | perl-be9cdb876bca65c372096fa7626a5a9897471b1d.tar.gz |
blib
Chip Salzenberg <chip@atlantic.net> writes:
>According to Karl Glazebrook:
>> How about putting blib.pm in 5.004? It's a darn useful utility and only
>> consumes a few bytes.
>
>Um, where/what is it?
It allows
perl -Mblib script
to be used to test script on pre-installed extension when things are still
in MakeMaker's 'blib' area.
Here is my current version. It now puts absolute paths in @INC to speed
Auto/Dyna loading and to allow script to chdir()
p5p-msgid: <199611230917.JAA00471@ni-s.u-net.com>
-rw-r--r-- | blib.pm | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/blib.pm b/blib.pm new file mode 100644 index 0000000000..4d8f609b52 --- /dev/null +++ b/blib.pm @@ -0,0 +1,71 @@ +package blib; + +=head1 NAME + +blib - Use MakeMaker's uninstalled version of a package + +=head1 SYNOPSIS + + perl -Mblib script [args...] + + perl -Mblib=dir script [args...] + +=head1 DESCRIPTION + +Looks for MakeMaker-like I<'blib'> directory structure starting in +I<dir> (or current directory) and working back up to five levels of '..'. + +Intended for use on command line with B<-M> option as a way of testing +arbitary scripts against an uninstalled version of a package. + +However it is possible to : + + use blib; + or + use blib '..'; + +etc. if you really must. + +=head1 BUGS + +Pollutes global name space for development only task. + +=head1 AUTHOR + +Nick Ing-Simmons nik@tiuk.ti.com + +=cut + +use Cwd; + +warn __FILE__; + +sub import +{ + my $package = shift; + my $dir = getcwd; + if (@_) + { + print join(',',@_),"\n"; + $dir = shift; + $dir =~ s/blib$//; + $dir =~ s,/+$,,; + $dir = '.' unless ($dir); + die "$dir is not a directory\n" unless (-d $dir); + } + my $i = 5; + while ($i--) + { + my $blib = "${dir}/blib"; + if (-d $blib && -d "$blib/arch" && -d "$blib/lib") + { + unshift(@INC,"$blib/arch","$blib/lib"); + warn "Using $blib"; + return; + } + $dir .= "/.."; + } + die "Cannot find blib even in $dir\n"; +} + +1; |