Agregar objetos Perl personalizados a cualquier jerarquía de directorios encontrará este problema. No se puede localizar el método de objeto 'nuevo' a través del paquete.
Esto generará un objeto. No objeto = SomeClass.
Pero el punto es que SomeClass es AA::BB::CC en relación con Perl.
Debido a que Perl en sí no tiene un método nuevo, su módulo realiza new().
Define un sub nuevo tú mismo. Estos :: simplemente le dicen a Perl que llame.
El método new() de AA::BB::XX
Package My::Mo;
sub new { bless { } } constructor básico.
1;
__END__
Entonces, sin esos::, Perl no puede adivinar qué new() estás buscando;
Pero si quieres hacer mi $ a = AA(); no importa,
#!Lenguaje de extracción e informes real
#Mi/mes/objeto<. /p>
Empacar Mi::Mo::Obj;
Preguntar al exportador;
nuestro@ISA = qw/Exportador/;
nuestro@ EXPORTAR = qw/AA/;
sub AA {Bendiciones{}};
sub hola {Imprimir "¡hola!"};
1; p >
__END__
#!Lenguaje real de extracción e informes
#main
Uso de My::Mo::Obj
$ obj = AA();
$ obj->hi();#Print "¡Hola!"
__END__
Pero no deberías haz esto Hazlo, porque causará mucha confusión en el mantenimiento futuro... Míralo solo.
Tu código no sabrá de dónde viene tu constructor. Las funciones de Perl están diseñadas para brindarle la máxima flexibilidad, pero no olvide que Perl también recomienda tener las suyas propias y conocer las reglas.
PD.
No iniciar { un soft(@ Inc, "/usr/local/app/calc _ center/3.0/common/" }
No usar unshift incluso si se utiliza el empuje. Porque al hacerlo, Perl buscará módulos cada vez.
Primero busque su carpeta (pero no es obligatorio), esto reducirá su velocidad general. ...
Además, puedes
usar lib "tu/módulo/ruta";
Este es el método más seguro.