Tengo una situación donde tengo que encontrar la persona que llama de un paquete y el código se ve algo como:Perl Herencia - ¿Quién es la persona que llama de la clase padre
Inherited.pm:
package Inherited;
our @ISA = qw(BaseClass);
sub new {
SUPER::new();
}
BaseClass .PM
package BaseClass;
sub new {
$a = caller(0);
print $a
}
ahora tengo otra clase (MyClass.pm), que hace:
MyClass.pm:
$obj = Inherited->new();
Esto imprime Herencia. Pero necesito MyClass para ser la declaración impresa.
¿Podría alguien ayudarme en cómo resolver esto?
No entiendo por qué esperas esto. 'Inherited' es la persona que llama. Puede marcar 'new()' de 'Inherited' y luego pasar esa información. – Cfreak
@Cfreak: gracias por la respuesta. Ya acepto que pasar por el argumento es una solución, pero ¿hay alguna otra forma de encontrar al que llama de la clase padre? En mi situación real, necesito este tipo de funcionalidad sin pasar argumentos. – sundar
Es posible que pueda utilizar la capacidad de seguimiento de pila de 'Carp' para buscar toda la lista de llamantes (' Carp :: longmess() '), pero no es una gran solución. Eche un vistazo a los módulos 'Class :: *' en CPAN. Puede haber una solución más elegante allí. – Cfreak