Perl Language Cargando un módulo en tiempo de ejecución


Ejemplo

require Exporter;

Esto asegurará que el módulo Exporter se cargue en tiempo de ejecución si aún no se ha importado. (Ver también: perldoc -f require .)

NB: La mayoría de los usuarios deberían use módulos en lugar de require . A diferencia del use , require no llama al método de importación del módulo y se ejecuta en tiempo de ejecución, no durante la compilación.

Esta forma de cargar módulos es útil si no puede decidir qué módulos necesita antes del tiempo de ejecución, como con un sistema de complementos:

package My::Module;
my @plugins = qw( One Two );
foreach my $plugin (@plugins) {
    my $module = __PACKAGE__ . "::Plugins::$plugin";
    $module =~ s!::!/!g;
    require "$module.pm";
}

Esto intentaría cargar My::Package::Plugins::One y My::Package::Plugins::Two . @plugins supuesto, @plugins debería provenir de alguna entrada del usuario o un archivo de configuración para que esto tenga sentido. Tenga en cuenta el operador de sustitución s!::!/!g que reemplaza cada par de dos puntos con una barra. Esto se debe a que puede cargar módulos utilizando la sintaxis de nombre de módulo familiar de use solo si el nombre del módulo es una simple palabra. Si pasa una cadena o una variable, debe contener un nombre de archivo.