diff options
author | Andy Dougherty <doughera@lafcol.lafayette.edu> | 1995-06-22 00:43:21 +0000 |
---|---|---|
committer | Andy Dougherty <doughera@lafcol.lafayette.edu> | 1995-06-22 00:43:21 +0000 |
commit | e50aee73b3d4c555c37e4b4a16694765fb16c887 (patch) | |
tree | 46b50fff5f53a49b55d0ff3f4e1816e427264375 /lib/lib.pm | |
parent | 4aa0a1f7324b8447469670a1b2427c3ac2428bae (diff) | |
download | perl-e50aee73b3d4c555c37e4b4a16694765fb16c887.tar.gz |
This is my patch patch.1m for perl5.001.
To apply, change to your perl directory, run the command above, then
apply with
patch -p1 -N < thispatch.
Highlights of this patch include:
1. Fixes for $sitelib, $d_stdio_ptr_lval, and $d_stdio_cnt_lval
when config.sh is re-used.
2. Move embed.h, keywords.h, and opcode.h dependencies to
a special regen_headers target that is ordinarily not used.
This is now analogous to the run_byacc target. As a cosmetic
side-effect, I transliterated embed_h.sh into embed.pl so that
it can run on non-unix systems as well.
3. Tests for gdbm_{sync,exists,setopt} in GDBM_File (needed for
Slackware 2.1).
For good measure, I've also thrown in the following patches I pulled
off the list, mostly unmodified from the originals.
1. Larry's "unofficial official" fix for the subroutine array context
problem.
2. Tim's __DATA__ patch. (I kept forgetting about this one.)
3. Malcom's USE_OP_MASK patch to pave the way for his Safe extension.
4. Spider's suggested renaming of regexec to pregexec and regcomp to
pregcomp to avoid conflicts with POSIX symbols on Digital Unix.
(I only added a brief explanatory comment to the relevant .c
files.)
5. Spider's installperl patch to avoid installing *.orig and and the
.exists files. (I changed this a little to include patch's ~
suffix, which is used on systems with short file names (in some
versions of patch)).
6. Raphael's "safe_unlink" patch to installperl, in case a copy
of perl is currently runniung.
7. xsubpp 1.9.
8. Tim's lib.pm module (with patched corrected spelling of 2nd :-).
9. Tim's Exporter module version patches.
10. Tim's MakeMaker patches for make test when LINKTYPE=static.
11. Randal's pod2html patches.
12. Spider's "picky compiler" patches for x2p/util.[ch]
13. Paul's updated source filtering patches.
Patch and enjoy. I hope nothing breaks :-).
Andy Dougherty doughera@lafcol.lafayette.edu
Dept. of Physics
Lafayette College, Easton PA 18042
Diffstat (limited to 'lib/lib.pm')
-rw-r--r-- | lib/lib.pm | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/lib/lib.pm b/lib/lib.pm new file mode 100644 index 0000000000..a0fe89b13d --- /dev/null +++ b/lib/lib.pm @@ -0,0 +1,103 @@ +package lib; + +@ORIG_INC = (); # (avoid typo warning) +@ORIG_INC = @INC; # take a handy copy of 'original' value + + +sub import { + shift; + unshift(@INC, @_); +} + + +sub unimport { + shift; + my $mode = shift if $_[0] =~ m/^:[A-Z]+/; + + my %names; + foreach(@_) { ++$names{$_} }; + + if ($mode and $mode eq ':ALL') { + # Remove ALL instances of each named directory. + @INC = grep { !exists $names{$_} } @INC; + } else { + # Remove INITIAL instance(s) of each named directory. + @INC = grep { --$names{$_} < 0 } @INC; + } +} + +__END__ + +=head1 NAME + +lib - manipulate @INC at compile time + +=head1 SYNOPSIS + + use lib LIST; + + no lib LIST; + +=head1 DESCRIPTION + +This is a small simple module which simplifies the manipulation of @INC +at compile time. + +It is typically used to add extra directories to perl's search path so +that later C<use> or C<require> statements will find modules which are +not located on perl's default search path. + + +=head2 ADDING DIRECTORIES TO @INC + +The parameters to C<use lib> are added to the start of the perl search +path. Saying + + use lib LIST; + +is the same as saying + + BEGIN { unshift(@INC, LIST) } + + +=head2 DELETING DIRECTORIES FROM @INC + +You should normally only add directories to @INC. If you need to +delete directories from @INC take care to only delete those which you +added yourself or which you are certain are not needed by other modules +in your script. Other modules may have added directories which they +need for correct operation. + +By default the C<no lib> statement deletes the I<first> instance of +each named directory from @INC. To delete multiple instances of the +same name from @INC you can specify the name multiple times. + +To delete I<all> instances of I<all> the specified names from @INC you can +specify ':ALL' as the first parameter of C<no lib>. For example: + + no lib qw(:ALL .); + + +=head2 RESTORING ORIGINAL @INC + +When the lib module is first loaded it records the current value of @INC +in an array C<@lib::ORIG_INC>. To restore @INC to that value you +can say either + + @INC = @lib::ORIG_INC; + +or + + no lib @INC; + use lib @lib::ORIG_INC; + +=head1 SEE ALSO + +AddINC - optional module which deals with paths relative to the source file. + +=head1 AUTHOR + +Tim Bunce, 2nd June 1995. + +=cut + |