Estoy tratando de averiguar cómo hacer que una referencia de función funcione para un módulo Perl. Sé cómo hacerlo fuera de un módulo, ¿pero dentro de uno? Considere un código como este:¿Cómo escribir una referencia de función en un módulo Perl?
==mymodule.pm==
1 sub foo { my $self = shift; ... }
2 sub bar { my $self = shift; ... }
3 sub zip {
4 my $self = shift;
5 my $ref = \&foo;
6 $self->&$foo(); # what syntax is appropriate?
7 }
==eof===
Mire las líneas 5-6 anteriores. ¿Cuál es la sintaxis correcta para (1) definir la referencia de función en primer lugar, y (2) desreferenciarla?
Lo importante tener en cuenta en este estilo de llamadas es que '$ self' es no se usa para determinar qué método llamar (como suele ser el caso cuando se llama a un método OO-style) - el método se determina únicamente a partir de '$ ref', y' $ self' simplemente se pasa como el primer argumento de $ ref. Contraste esto con si '$ ref' era simplemente el nombre de un método, en cuyo caso comenzaríamos a buscar ese método en' $ self' y luego en el árbol de herencia. – Ether
¡Votado por ser el señor Randal "one-L" Schwartz! ¡Hurra! –
@Jonathan: no convirtamos SO [perl] en un grupo de groupies salivantes ... los fanboys de Jon Skeet ya son lo suficientemente malos. :/ – Ether