Module::Load - runtime require of both modules and files
use Module::Load; my $module = 'Data:Dumper'; load Data::Dumper; # loads that module load 'Data::Dumper'; # ditto load $module # tritto my $script = 'some/script.pl' load $script; load 'some/script.pl'; # use quotes because of punctuations load thing; # try 'thing' first, then 'thing.pm'
load eliminates the need to know whether you are trying to require either a file or a module.
load
If you consult perldoc -f require you will see that require will behave differently when given a bareword or a string.
perldoc -f require
require
In the case of a string, require assumes you are wanting to load a file. But in the case of a bareword, it assumes you mean a module.
This gives nasty overhead when you are trying to dynamically require modules at runtime, since you will need to change the module notation (Acme::Comment) to a file notation fitting the particular platform you are on.
Acme::Comment
load elimates the need for this overhead and will just DWYM.
load has the following rules to decide what it thinks you want:
If the argument has any characters in it other than those matching \w, : or ', it must be a file
\w
:
'
If the argument matches only [\w:'], it must be a module
[\w:']
If the argument matches only \w, it could either be a module or a file. We will try to find file first in @INC and if that fails, we will try to find file.pm in @INC. If both fail, we die with the respective error messages.
file
@INC
file.pm
Because of a bug in perl (#19213), at least in version 5.6.1, we have to hardcode the path seperator for a require on Win32 to be /, like on Unix rather than the Win32 \. Otherwise perl will not read it's own %INC accurately double load files if they are required again, or in the worst case, core dump.
/
\
Allow for import() arguments and version checks when dealing with a module
import()
This module by Jos Boumans <kane@cpan.org>.
This module is copyright (c) 2002 Jos Boumans <kane@cpan.org>. All rights reserved.
This library is free software; you may redistribute and/or modify it under the same terms as Perl itself.
To install Module::Load, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Module::Load
CPAN shell
perl -MCPAN -e shell install Module::Load
For more information on module installation, please visit the detailed CPAN module installation guide.