-
-
23 May 2022 15:17:22 UTC
- Distribution: Mojolicious
- Source (raw)
- Browse (raw)
- Changes
- Homepage
- How to Contribute
- Repository
- Issues
- Testers (1479 / 7 / 32)
- Kwalitee
Bus factor: 6- 90.64% Coverage
- License: artistic_2
- Perl: v5.16.0
- Activity
24 month- Tools
- Download (827.39KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
NAME
Mojo::Loader - Load all kinds of things
SYNOPSIS
use Mojo::Loader qw(data_section find_modules load_class); # Find modules in a namespace for my $module (find_modules 'Some::Namespace') { # Load them safely my $e = load_class $module; warn qq{Loading "$module" failed: $e} and next if ref $e; # And extract files from the DATA section say data_section($module, 'some_file.txt'); }
DESCRIPTION
Mojo::Loader is a class loader and plugin framework. Aside from finding modules and loading classes, it allows multiple files to be stored in the
DATA
section of a class, which can then be accessed individually.package Foo; 1; __DATA__ @@ test.txt This is the first file. @@ test2.html (base64) VGhpcyBpcyB0aGUgc2Vjb25kIGZpbGUu @@ test This is the third file.
Each file has a header starting with
@@
, followed by the file name and optional instructions for decoding its content. Currently only the Base64 encoding is supported, which can be quite convenient for the storage of binary data.FUNCTIONS
Mojo::Loader implements the following functions, which can be imported individually.
data_section
my $all = data_section 'Foo::Bar'; my $index = data_section 'Foo::Bar', 'index.html';
Extract embedded file from the
DATA
section of a class, all files will be cached once they have been accessed for the first time.# List embedded files say for keys %{data_section 'Foo::Bar'};
file_is_binary
my $bool = file_is_binary 'Foo::Bar', 'test.png';
Check if embedded file from the
DATA
section of a class was Base64 encoded.find_packages
my @pkgs = find_packages 'MyApp::Namespace';
Search for packages in a namespace non-recursively.
find_modules
my @modules = find_modules 'MyApp::Namespace'; my @modules = find_modules 'MyApp::Namespace', {recursive => 1};
Search for modules in a namespace.
These options are currently available:
- recursive
-
recursive => 1
Search namespace recursively.
load_class
my $e = load_class 'Foo::Bar';
Load a class and catch exceptions, returns a false value if loading was successful, a true value if the class was not found, or a Mojo::Exception object if loading failed. Note that classes are checked for a
new
method to see if they are already loaded, so trying to load the same class multiple times may yield different results.# Handle exceptions if (my $e = load_class 'Foo::Bar') { die ref $e ? "Exception: $e" : 'Not found!'; }
load_classes
my @classes = load_classes 'Foo::Bar';
Load all classes in a namespace recursively.
SEE ALSO
Module Install Instructions
To install Mojolicious, copy and paste the appropriate command in to your terminal.
cpanm Mojolicious
perl -MCPAN -e shell install Mojolicious
For more information on module installation, please visit the detailed CPAN module installation guide.