summaryrefslogtreecommitdiffstats
path: root/upstream/debian-unstable/man3/Module::Load.3perl
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/debian-unstable/man3/Module::Load.3perl')
-rw-r--r--upstream/debian-unstable/man3/Module::Load.3perl265
1 files changed, 265 insertions, 0 deletions
diff --git a/upstream/debian-unstable/man3/Module::Load.3perl b/upstream/debian-unstable/man3/Module::Load.3perl
new file mode 100644
index 00000000..80230e70
--- /dev/null
+++ b/upstream/debian-unstable/man3/Module::Load.3perl
@@ -0,0 +1,265 @@
+.\" -*- mode: troff; coding: utf-8 -*-
+.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
+.ie n \{\
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds C`
+. ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+. if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. if !\nF==2 \{\
+. nr % 0
+. nr F 2
+. \}
+. \}
+.\}
+.rr rF
+.\" ========================================================================
+.\"
+.IX Title "Module::Load 3perl"
+.TH Module::Load 3perl 2024-01-12 "perl v5.38.2" "Perl Programmers Reference Guide"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH NAME
+Module::Load \- runtime require of both modules and files
+.SH SYNOPSIS
+.IX Header "SYNOPSIS"
+.Vb 1
+\& use Module::Load;
+\&
+\& my $module = \*(AqData::Dumper\*(Aq;
+\&
+\& load Data::Dumper; # loads that module, but not import any functions
+\& # \-> cannot use \*(AqDumper\*(Aq function
+\&
+\& load \*(AqData::Dumper\*(Aq; # ditto
+\& load $module # tritto
+\&
+\& autoload Data::Dumper; # loads that module and imports the default functions
+\& # \-> can use \*(AqDumper\*(Aq function
+\&
+\& my $script = \*(Aqsome/script.pl\*(Aq
+\& load $script;
+\& load \*(Aqsome/script.pl\*(Aq; # use quotes because of punctuations
+\&
+\& load thing; # try \*(Aqthing\*(Aq first, then \*(Aqthing.pm\*(Aq
+\&
+\& load CGI, \*(Aq:all\*(Aq; # like \*(Aquse CGI qw[:standard]\*(Aq
+.Ve
+.SH DESCRIPTION
+.IX Header "DESCRIPTION"
+\&\f(CW\*(C`Module::Load\*(C'\fR eliminates the need to know whether you are trying
+to require either a file or a module.
+.PP
+If you consult \f(CW\*(C`perldoc \-f require\*(C'\fR you will see that \f(CW\*(C`require\*(C'\fR will
+behave differently when given a bareword or a string.
+.PP
+In the case of a string, \f(CW\*(C`require\*(C'\fR assumes you are wanting to load a
+file. But in the case of a bareword, it assumes you mean a module.
+.PP
+This gives nasty overhead when you are trying to dynamically require
+modules at runtime, since you will need to change the module notation
+(\f(CW\*(C`Acme::Comment\*(C'\fR) to a file notation fitting the particular platform
+you are on.
+.PP
+\&\f(CW\*(C`Module::Load\*(C'\fR eliminates the need for this overhead and will
+just DWYM.
+.ie n .SS "Difference between ""load"" and ""autoload"""
+.el .SS "Difference between \f(CWload\fP and \f(CWautoload\fP"
+.IX Subsection "Difference between load and autoload"
+\&\f(CW\*(C`Module::Load\*(C'\fR imports the two functions \- \f(CW\*(C`load\*(C'\fR and \f(CW\*(C`autoload\*(C'\fR
+.PP
+\&\f(CW\*(C`autoload\*(C'\fR imports the default functions automatically,
+but \f(CW\*(C`load\*(C'\fR do not import any functions.
+.PP
+\&\f(CW\*(C`autoload\*(C'\fR is usable under \f(CW\*(C`BEGIN{};\*(C'\fR.
+.PP
+Both the functions can import the functions that are specified.
+.PP
+Following codes are same.
+.PP
+.Vb 1
+\& load File::Spec::Functions, qw/splitpath/;
+\&
+\& autoload File::Spec::Functions, qw/splitpath/;
+.Ve
+.SH FUNCTIONS
+.IX Header "FUNCTIONS"
+.IP load 4
+.IX Item "load"
+Loads a specified module.
+.Sp
+See "Rules" for detailed loading rule.
+.IP autoload 4
+.IX Item "autoload"
+Loads a specified module and imports the default functions.
+.Sp
+Except importing the functions, 'autoload' is same as 'load'.
+.IP load_remote 4
+.IX Item "load_remote"
+Loads a specified module to the specified package.
+.Sp
+.Vb 1
+\& use Module::Load \*(Aqload_remote\*(Aq;
+\&
+\& my $pkg = \*(AqOther::Package\*(Aq;
+\&
+\& load_remote $pkg, \*(AqData::Dumper\*(Aq; # load a module to \*(AqOther::Package\*(Aq
+\& # but do not import \*(AqDumper\*(Aq function
+.Ve
+.Sp
+A module for loading must be quoted.
+.Sp
+Except specifing the package and quoting module name,
+\&'load_remote' is same as 'load'.
+.IP autoload_remote 4
+.IX Item "autoload_remote"
+Loads a specified module and imports the default functions to the specified package.
+.Sp
+.Vb 1
+\& use Module::Load \*(Aqautoload_remote\*(Aq;
+\&
+\& my $pkg = \*(AqOther::Package\*(Aq;
+\&
+\& autoload_remote $pkg, \*(AqData::Dumper\*(Aq; # load a module to \*(AqOther::Package\*(Aq
+\& # and imports \*(AqDumper\*(Aq function
+.Ve
+.Sp
+A module for loading must be quoted.
+.Sp
+Except specifing the package and quoting module name,
+\&'autoload_remote' is same as 'load_remote'.
+.SH Rules
+.IX Header "Rules"
+All functions have the following rules to decide what it thinks
+you want:
+.IP \(bu 4
+If the argument has any characters in it other than those matching
+\&\f(CW\*(C`\ew\*(C'\fR, \f(CW\*(C`:\*(C'\fR or \f(CW\*(C`\*(Aq\*(C'\fR, it must be a file
+.IP \(bu 4
+If the argument matches only \f(CW\*(C`[\ew:\*(Aq]\*(C'\fR, it must be a module
+.IP \(bu 4
+If the argument matches only \f(CW\*(C`\ew\*(C'\fR, it could either be a module or a
+file. We will try to find \f(CW\*(C`file.pm\*(C'\fR first in \f(CW@INC\fR and if that
+fails, we will try to find \f(CW\*(C`file\*(C'\fR in \f(CW@INC\fR. If both fail, we die with
+the respective error messages.
+.SH "IMPORTS THE FUNCTIONS"
+.IX Header "IMPORTS THE FUNCTIONS"
+\&'load' and 'autoload' are imported by default, but 'load_remote' and
+\&'autoload_remote' are not imported.
+.PP
+To use 'load_remote' or 'autoload_remote', specify at 'use'.
+.IP """load"",""autoload"",""load_remote"",""autoload_remote""" 4
+.IX Item """load"",""autoload"",""load_remote"",""autoload_remote"""
+Imports the selected functions.
+.Sp
+.Vb 2
+\& # imports \*(Aqload\*(Aq and \*(Aqautoload\*(Aq (default)
+\& use Module::Load;
+\&
+\& # imports \*(Aqautoload\*(Aq only
+\& use Module::Load \*(Aqautoload\*(Aq;
+\&
+\& # imports \*(Aqautoload\*(Aq and \*(Aqautoload_remote\*(Aq, but don\*(Aqt import \*(Aqload\*(Aq;
+\& use Module::Load qw/autoload autoload_remote/;
+.Ve
+.IP 'all' 4
+.IX Item "'all'"
+Imports all the functions.
+.Sp
+.Vb 1
+\& use Module::Load \*(Aqall\*(Aq; # imports load, autoload, load_remote, autoload_remote
+.Ve
+.IP '','none',undef 4
+.IX Item "'','none',undef"
+Not import any functions (\f(CW\*(C`load\*(C'\fR and \f(CW\*(C`autoload\*(C'\fR are not imported).
+.Sp
+.Vb 1
+\& use Module::Load \*(Aq\*(Aq;
+\&
+\& use Module::Load \*(Aqnone\*(Aq;
+\&
+\& use Module::Load undef;
+.Ve
+.SH Caveats
+.IX Header "Caveats"
+Because of a bug in perl (#19213), at least in version 5.6.1, we have
+to hardcode the path separator for a require on Win32 to be \f(CW\*(C`/\*(C'\fR, like
+on Unix rather than the Win32 \f(CW\*(C`\e\*(C'\fR. Otherwise perl will not read its
+own \f(CW%INC\fR accurately double load files if they are required again, or
+in the worst case, core dump.
+.PP
+\&\f(CW\*(C`Module::Load\*(C'\fR cannot do implicit imports, only explicit imports.
+(in other words, you always have to specify explicitly what you wish
+to import from a module, even if the functions are in that modules'
+\&\f(CW@EXPORT\fR)
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+Module::Runtime provides functions for loading modules,
+checking the validity of a module name,
+converting a module name to partial \f(CW\*(C`.pm\*(C'\fR path,
+and related utility functions.
+.PP
+"require" in perlfunc <https://metacpan.org/pod/perlfunc#require>
+and
+"use" in perlfunc <https://metacpan.org/pod/perlfunc#use>.
+.PP
+Mojo::Loader is a "class loader and plugin framework",
+and is included in the
+Mojolicious <https://metacpan.org/release/Mojolicious> distribution.
+.PP
+Module::Loader is a module for finding and loading modules
+in a given namespace, inspired by \f(CW\*(C`Mojo::Loader\*(C'\fR.
+.SH ACKNOWLEDGEMENTS
+.IX Header "ACKNOWLEDGEMENTS"
+Thanks to Jonas B. Nielsen for making explicit imports work.
+.SH "BUG REPORTS"
+.IX Header "BUG REPORTS"
+Please report bugs or other issues to <bug\-module\-load@rt.cpan.org>.
+.SH AUTHOR
+.IX Header "AUTHOR"
+This module by Jos Boumans <kane@cpan.org>.
+.SH COPYRIGHT
+.IX Header "COPYRIGHT"
+This library is free software; you may redistribute and/or modify it
+under the same terms as Perl itself.