manpagez: man pages & more
man Mojo::Loader(3)
Home | html | info | man
Mojo::Loader(3)       User Contributed Perl Documentation      Mojo::Loader(3)




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

       Mojolicious(3), Mojolicious::Guides(3), <https://mojolicious.org>.



perl v5.32.1                      2021-12-08                   Mojo::Loader(3)

mojolicious 9.260.0 - Generated Thu May 26 08:14:23 CDT 2022
© manpagez.com 2000-2024
Individual documents may contain additional copyright information.