blib
Nick Ing-Simmons [Sat, 23 Nov 1996 09:17:40 +0000 (09:17 +0000)]
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>

blib.pm [new file with mode: 0644]

diff --git a/blib.pm b/blib.pm
new file mode 100644 (file)
index 0000000..4d8f609
--- /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;