Digamos que creo una clase llamada Bar
. El archivo comienza Bar.pm
Perl class naming convention
package Bar;
para evitar chocar con otros Bar
clases, me puso el archivo en un subdirectorio Foo
. Así que ahora, cuando se utiliza la clase, tengo que escribir
use Foo::Bar;
Mi pregunta es, necesito para cambiar el nombre de la clase a Foo::Bar
? En otras palabras, necesito para cambiar la primera línea de Bar.pm
a
package Foo::Bar;
? El problema es que, si hago esto, ahora debo referirme a la clase como Foo::Bar
en todas partes, p.
my $obj = Foo::Bar->new();
Foo::Bar->doClassMethod();
que es molesto (el mismo problema se discutió en this question), especialmente ya que soy amo los métodos de la clase.
¿Puede ampliar un poco el significado de "tener que"? Lo pregunto porque funciona (compila y ejecuta) ** sin ** cambiar el nombre del paquete. ¿Cuáles son las consecuencias de no cambiarlo? – shawkinaw
@shawkinaw Si no lo hace, el método 'import' de la declaración' use' no encontrará la clase correcta, y otros métodos de clase, incluidos los constructores, (a menudo) fallarán. Es como equivocar el caso en la declaración 'use'. Funciona en sistemas de archivos que no distinguen entre mayúsculas y minúsculas, pero solo por accidente, y todo tipo de cosas se manchan. No hagas eso. Simplemente haga su archivo, paquete y use toda la línea exactamente. Dentro de unos años, es posible que tenga algún motivo para hacer otra cosa, pero eso solo se logra con una experiencia severa y de guerra. Aún es dudoso – tchrist
OK, gracias por la aclaración. – shawkinaw