/snap/gh/502/usr/share/perl/5.26.1
NameSizeModeActions
App/-0755rm
Archive/-0755rm
Attribute/-0755rm
autodie/-0755rm
B/-0755rm
Carp/-0755rm
Class/-0755rm
Compress/-0755rm
Config/-0755rm
CPAN/-0755rm
DBM_Filter/-0755rm
Devel/-0755rm
Digest/-0755rm
Encode/-0755rm
encoding/-0755rm
Exporter/-0755rm
ExtUtils/-0755rm
File/-0755rm
Filter/-0755rm
Getopt/-0755rm
HTTP/-0755rm
I18N/-0755rm
IO/-0755rm
IPC/-0755rm
JSON/-0755rm
Locale/-0755rm
Math/-0755rm
Memoize/-0755rm
Module/-0755rm
Net/-0755rm
overload/-0755rm
Params/-0755rm
Parse/-0755rm
Perl/-0755rm
PerlIO/-0755rm
Pod/-0755rm
pod/-0755rm
Search/-0755rm
TAP/-0755rm
Term/-0755rm
Test/-0755rm
Test2/-0755rm
Text/-0755rm
Thread/-0755rm
Tie/-0755rm
Time/-0755rm
Unicode/-0755rm
unicore/-0755rm
User/-0755rm
version/-0755rm
warnings/-0755rm
AnyDBM_File.pm26180644editdlrm
autodie.pm128860644editdlrm
AutoLoader.pm54870644editdlrm
AutoSplit.pm196370644editdlrm
autouse.pm42380644editdlrm
base.pm89310644editdlrm
Benchmark.pm310250644editdlrm
bigint.pm233980644editdlrm
bignum.pm211370644editdlrm
bigrat.pm161540644editdlrm
blib.pm20860644editdlrm
bytes.pm4470644editdlrm
bytes_heavy.pl7580644editdlrm
Carp.pm201480644editdlrm
charnames.pm208670644editdlrm
constant.pm57370644editdlrm
CORE.pod31880644editdlrm
CPAN.pm1414340644editdlrm
DB.pm189220644editdlrm
DBM_Filter.pm143850644editdlrm
deprecate.pm35100644editdlrm
diagnostics.pm190380644editdlrm
Digest.pm107010644editdlrm
DirHandle.pm15560644editdlrm
Dumpvalue.pm175560644editdlrm
dumpvar.pl155550644editdlrm
English.pm47610644editdlrm
Env.pm55240644editdlrm
experimental.pm57950644editdlrm
Exporter.pm23670644editdlrm
Fatal.pm582800644editdlrm
feature.pm44960644editdlrm
fields.pm50220644editdlrm
FileCache.pm55720644editdlrm
FileHandle.pm21110644editdlrm
filetest.pm40030644editdlrm
FindBin.pm45610644editdlrm
if.pm33400644editdlrm
integer.pm1720644editdlrm
Internals.pod25760644editdlrm
less.pm32040644editdlrm
locale.pm34210644editdlrm
Memoize.pm361920644editdlrm
meta_notation.pm21170644editdlrm
NEXT.pm188460644editdlrm
ok.pm9670644editdlrm
open.pm80210644editdlrm
overload.pm44410644editdlrm
overloading.pm9640644editdlrm
parent.pm4780644editdlrm
perl5db.pl3164300644editdlrm
perlfaq.pm780644editdlrm
PerlIO.pm104590644editdlrm
Safe.pm250820644editdlrm
SelectSaver.pm3440644editdlrm
SelfLoader.pm176920644editdlrm
sigtrap.pm76060644editdlrm
sort.pm60810644editdlrm
strict.pm16060644editdlrm
subs.pm8480644editdlrm
Symbol.pm20990644editdlrm
Test.pm300570644editdlrm
Test2.pm63930644editdlrm
Thread.pm82870644editdlrm
UNIVERSAL.pm65940644editdlrm
utf8.pm3420644editdlrm
utf8_heavy.pl316150644editdlrm
vars.pm11490644editdlrm
version.pm17150644editdlrm
version.pod98600644editdlrm
vmsish.pm43130644editdlrm
warnings.pm219500644editdlrm
XSLoader.pm39190644editdlrm
_charnames.pm331660644editdlrm
Edit: /snap/gh/502/usr/share/perl/5.26.1/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 is already loaded, then the declaration use autouse 'Module' => qw(func1 func2($;$)); is equivalent to use Module qw(func1 func2); if C defines func2() with prototype C<($;$)>, and func1() has no prototypes. (At least if C uses C's C, otherwise it is a fatal error.) If the module C 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 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 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 Cd 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 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 Cing 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