home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl_mlb.zip / blib.pm < prev    next >
Text File  |  1997-11-25  |  1KB  |  72 lines

  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.  
  41. use vars qw($VERSION);
  42. $VERSION = '1.00';
  43.  
  44. sub import
  45. {
  46.  my $package = shift;
  47.  my $dir = getcwd;
  48.  if (@_)
  49.   {
  50.    $dir = shift;
  51.    $dir =~ s/blib$//;
  52.    $dir =~ s,/+$,,;
  53.    $dir = '.' unless ($dir);
  54.    die "$dir is not a directory\n" unless (-d $dir);
  55.   }
  56.  my $i   = 5;
  57.  while ($i--)
  58.   {
  59.    my $blib = "${dir}/blib";
  60.    if (-d $blib && -d "$blib/arch" && -d "$blib/lib")
  61.     {
  62.      unshift(@INC,"$blib/arch","$blib/lib");
  63.      warn "Using $blib\n";
  64.      return;
  65.     }
  66.    $dir .= "/..";
  67.   }
  68.  die "Cannot find blib even in $dir\n";
  69. }
  70.  
  71. 1;
  72.