1package blib; 2 3=head1 NAME 4 5blib - 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 15Looks for MakeMaker-like I<'blib'> directory structure starting in 16I<dir> (or current directory) and working back up to five levels of '..'. 17 18Intended for use on command line with B<-M> option as a way of testing 19arbitary scripts against an uninstalled version of a package. 20 21However it is possible to : 22 23 use blib; 24 or 25 use blib '..'; 26 27etc. if you really must. 28 29=head1 BUGS 30 31Pollutes global name space for development only task. 32 33=head1 AUTHOR 34 35Nick Ing-Simmons nik@tiuk.ti.com 36 37=cut 38 39use Cwd; 40 41use vars qw($VERSION); 42$VERSION = '1.00'; 43 44sub import 45{ 46 my $package = shift; 47 my $dir = getcwd; 48 if ($^O eq 'VMS') { ($dir = VMS::Filespec::unixify($dir)) =~ s-/$--; } 49 if (@_) 50 { 51 $dir = shift; 52 $dir =~ s/blib$//; 53 $dir =~ s,/+$,,; 54 $dir = '.' unless ($dir); 55 die "$dir is not a directory\n" unless (-d $dir); 56 } 57 my $i = 5; 58 while ($i--) 59 { 60 my $blib = "${dir}/blib"; 61 if (-d $blib && -d "$blib/arch" && -d "$blib/lib") 62 { 63 unshift(@INC,"$blib/arch","$blib/lib"); 64 warn "Using $blib\n"; 65 return; 66 } 67 $dir .= "/.."; 68 } 69 die "Cannot find blib even in $dir\n"; 70} 71 721; 73