Quiero utilizar algunos paquetes y algunos pragmas en todos mis programas, como:¿Cómo "usar" múltiples módulos con un "uso"?
use 5.014;
use warnings;
use autodie;
use My::ModuleA::Something;
use ModuleB qw(Func1 Func2);
no quiero repetirme en cada módulo, por lo que busca una manera cómo hacer un solo paquete, por ejemplo, My::Common
lo que contendrá los paquetes anteriores y en mis programas hacen única:
use My::Common;
say Func1("hello"); #say enabled and Func1 imported in the My::Common
cómo lograr esto?
El preldoc -f use
se leyó y perldoc perlmodlib
por lo que creo que debo "algo" para hacer esto con Begin además requiere & importación, pero absolutamente no saben cómo.
ACTUALIZACIÓN: ya estoy trataron las cosas básicas.
Con require
- mi programa prg.pl.
require 'mymods.pl';
$var = "hello";
croak "$var\n";
mymods.pl contienen
use strict;
use feature 'say';
use Carp qw(carp croak cluck);
1;
no funciona. Ha obtenido un error:
$ perl prg.pl
String found where operator expected at prg.pl line 3, near "croak "$var\n""
(Do you need to predeclare croak?)
syntax error at prg.pl line 3, near "croak "$var\n""
Execution of prg.pl aborted due to compilation errors.
con "usar mi":
use My;
$var = "hello";
croak "$var\n";
mi My.pm
package My;
use strict;
use feature 'say';
use Carp qw(carp croak cluck);
1;
NO FUNCIONA tampoco. Tengo el mismo error.
¿Alguna idea de trabajo?
¡SÍ! Esto funciona. ;) Gracias. Por lo tanto, necesita importar las llamadas, y para las funciones exportadas necesita hacer el VooDoo oscuro :) con * {"$ caller ....}. – kobame
@kobame: Oh, espera, acabo de descubrir que' autodie-> import' didn ' t trabajo como pensé que sería. Por favor, eche un vistazo a mi edición. – yibe
¿Por qué no mencionar el estado de la técnica en CPAN? [Toolkit] (http://p3rl.org/Toolkit), [ToolSet] (http: // p3rl .org/ToolSet), [rig] (http://p3rl.org/rig), [perl5i] (http://p3rl.org/perl5i), [perl5] (http://p3rl.org/perl5) hazlo ya. – daxim