/
usr
/
share
/
perl5
/
/usr/share/perl5
mkdir
upload
Name
Size
Mode
Actions
Attribute/
-
0755
rm
B/
-
0755
rm
Class/
-
0755
rm
Compress/
-
0755
rm
Config/
-
0755
rm
CPAN/
-
0755
rm
DBM_Filter/
-
0755
rm
Devel/
-
0755
rm
encoding/
-
0755
rm
ExtUtils/
-
0755
rm
File/
-
0755
rm
Getopt/
-
0755
rm
I18N/
-
0755
rm
IO/
-
0755
rm
IPC/
-
0755
rm
Locale/
-
0755
rm
Math/
-
0755
rm
Memoize/
-
0755
rm
Module/
-
0755
rm
Net/
-
0755
rm
overload/
-
0755
rm
Pod/
-
0755
rm
pod/
-
0755
rm
Search/
-
0755
rm
Term/
-
0755
rm
Text/
-
0755
rm
Thread/
-
0755
rm
Tie/
-
0755
rm
Time/
-
0755
rm
Unicode/
-
0755
rm
unicore/
-
0755
rm
URI/
-
0755
rm
User/
-
0755
rm
vendor_perl/
-
0755
rm
warnings/
-
0755
rm
AnyDBM_File.pm
2618
0644
edit
dl
rm
AutoLoader.pm
15797
0644
edit
dl
rm
AutoSplit.pm
19637
0644
edit
dl
rm
autouse.pm
4238
0644
edit
dl
rm
base.pm
10980
0644
edit
dl
rm
Benchmark.pm
31025
0644
edit
dl
rm
blib.pm
2086
0644
edit
dl
rm
bytes.pm
3754
0644
edit
dl
rm
bytes_heavy.pl
758
0644
edit
dl
rm
charnames.pm
20867
0644
edit
dl
rm
CORE.pod
3188
0644
edit
dl
rm
DB.pm
18922
0644
edit
dl
rm
DBM_Filter.pm
14385
0644
edit
dl
rm
deprecate.pm
3079
0644
edit
dl
rm
diagnostics.pm
19038
0644
edit
dl
rm
DirHandle.pm
1556
0644
edit
dl
rm
Dumpvalue.pm
17556
0644
edit
dl
rm
dumpvar.pl
15555
0644
edit
dl
rm
English.pm
4761
0644
edit
dl
rm
feature.pm
17085
0644
edit
dl
rm
fields.pm
9489
0644
edit
dl
rm
FileCache.pm
5572
0644
edit
dl
rm
FileHandle.pm
6784
0644
edit
dl
rm
filetest.pm
4003
0644
edit
dl
rm
FindBin.pm
4561
0644
edit
dl
rm
if.pm
3340
0644
edit
dl
rm
integer.pm
3254
0644
edit
dl
rm
Internals.pod
2576
0644
edit
dl
rm
less.pm
3204
0644
edit
dl
rm
locale.pm
4855
0644
edit
dl
rm
Memoize.pm
36192
0644
edit
dl
rm
meta_notation.pm
2117
0644
edit
dl
rm
NEXT.pm
18846
0644
edit
dl
rm
open.pm
8021
0644
edit
dl
rm
overload.pm
53314
0644
edit
dl
rm
overloading.pm
1808
0644
edit
dl
rm
perl5db.pl
316420
0644
edit
dl
rm
PerlIO.pm
10459
0644
edit
dl
rm
Safe.pm
25082
0644
edit
dl
rm
SelectSaver.pm
1076
0644
edit
dl
rm
SelfLoader.pm
17692
0644
edit
dl
rm
sigtrap.pm
7606
0644
edit
dl
rm
sort.pm
6081
0644
edit
dl
rm
strict.pm
4738
0644
edit
dl
rm
subs.pm
848
0644
edit
dl
rm
Symbol.pm
4799
0644
edit
dl
rm
Test.pm
30057
0644
edit
dl
rm
Thread.pm
8287
0644
edit
dl
rm
UNIVERSAL.pm
6594
0644
edit
dl
rm
URI.pm
34790
0644
edit
dl
rm
utf8.pm
9116
0644
edit
dl
rm
utf8_heavy.pl
31615
0644
edit
dl
rm
vars.pm
2414
0644
edit
dl
rm
vmsish.pm
4313
0644
edit
dl
rm
warnings.pm
44756
0644
edit
dl
rm
XSLoader.pm
11267
0644
edit
dl
rm
_charnames.pm
33166
0644
edit
dl
rm
Edit:
/usr/share/perl5/autouse.pm
(4238B)
package autouse; #use strict; # debugging only use 5.006; # use warnings $autouse::VERSION = '1.11'; $autouse::DEBUG ||= 0; sub vet_import ($); sub croak { require Carp; Carp::croak(@_); } sub import { my $class = @_ ? shift : 'autouse'; croak "usage: use $class MODULE [,SUBS...]" unless @_; my $module = shift; (my $pm = $module) =~ s{::}{/}g; $pm .= '.pm'; if (exists $INC{$pm}) { vet_import $module; local $Exporter::ExportLevel = $Exporter::ExportLevel + 1; # $Exporter::Verbose = 1; return $module->import(map { (my $f = $_) =~ s/\(.*?\)$//; $f } @_); } # It is not loaded: need to do real work. my $callpkg = caller(0); print "autouse called from $callpkg\n" if $autouse::DEBUG; my $index; for my $f (@_) { my $proto; $proto = $1 if (my $func = $f) =~ s/\((.*)\)$//; my $closure_import_func = $func; # Full name my $closure_func = $func; # Name inside package my $index = rindex($func, '::'); if ($index == -1) { $closure_import_func = "${callpkg}::$func"; } else { $closure_func = substr $func, $index + 2; croak "autouse into different package attempted" unless substr($func, 0, $index) eq $module; } my $load_sub = sub { unless ($INC{$pm}) { require $pm; vet_import $module; } no warnings qw(redefine prototype); *$closure_import_func = \&{"${module}::$closure_func"}; print "autousing $module; " ."imported $closure_func as $closure_import_func\n" if $autouse::DEBUG; goto &$closure_import_func; }; if (defined $proto) { *$closure_import_func = eval "sub ($proto) { goto &\$load_sub }" || die; } else { *$closure_import_func = $load_sub; } } } sub vet_import ($) { my $module = shift; if (my $import = $module->can('import')) { croak "autoused module $module has unique import() method" unless defined(&Exporter::import) && ($import == \&Exporter::import || $import == \&UNIVERSAL::import) } } 1; __END__ =head1 NAME autouse - postpone load of modules until a function is used =head1 SYNOPSIS use autouse 'Carp' => qw(carp croak); carp "this carp was predeclared and autoused "; =head1 DESCRIPTION If the module C<Module> is already loaded, then the declaration use autouse 'Module' => qw(func1 func2($;$)); is equivalent to use Module qw(func1 func2); if C<Module> defines func2() with prototype C<($;$)>, and func1() has no prototypes. (At least if C<Module> uses C<Exporter>'s C<import>, otherwise it is a fatal error.) If the module C<Module> is not loaded yet, then the above declaration declares functions func1() and func2() in the current package. When these functions are called, they load the package C<Module> if needed, and substitute themselves with the correct definitions. =begin _deprecated use Module qw(Module::func3); will work and is the equivalent to: use Module qw(func3); It is not a very useful feature and has been deprecated. =end _deprecated =head1 WARNING Using C<autouse> will move important steps of your program's execution from compile time to runtime. This can =over 4 =item * Break the execution of your program if the module you C<autouse>d has some initialization which it expects to be done early. =item * hide bugs in your code since important checks (like correctness of prototypes) is moved from compile time to runtime. In particular, if the prototype you specified on C<autouse> line is wrong, you will not find it out until the corresponding function is executed. This will be very unfortunate for functions which are not always called (note that for such functions C<autouse>ing gives biggest win, for a workaround see below). =back To alleviate the second problem (partially) it is advised to write your scripts like this: use Module; use autouse Module => qw(carp($) croak(&$)); carp "this carp was predeclared and autoused "; The first line ensures that the errors in your argument specification are found early. When you ship your application you should comment out the first line, since it makes the second one useless. =head1 AUTHOR Ilya Zakharevich (ilya@math.ohio-state.edu) =head1 SEE ALSO perl(1). =cut
Save
cmd:
run