El módulo Exporter provee diferentes mecanismos para realizar la interfaz pública del módulo que estamos desarrollando.
En el ejemplo que sigue, la inicialización del vector especial @ISA
en la línea 5 hace que (junto que el use Exporter
de la línea 3)
el módulo Modexample::HopsExport
''herede'' de Exporter
los métodos que nos hacen falta como import
.
lhp@nereida:~/projects/perl/src$ cat -n Modexample/HopsExport.pm 1 package Modexample::HopsExport; 2 use strict; 3 use Exporter; 4 5 our @ISA = ('Exporter'); 6 our @EXPORT = qw(&hop_along); 7 8 sub hop_along { 9 my ($from, $to, $step) = @_; 10 my $next = $from-$step; # incializar contador 11 my $closure_ref = sub { 12 $next += $step; 13 $next = $from-$step, return if $next > $to; 14 $_[0] =$next; 15 return 1; 16 }; 17 return $closure_ref; 18 } 19 20 1;Aún cuando no hemos visto objetos, puede dar una ojeada a la sección 6.6 que trata sobre la herencia. La herencia indica que los métodos definidos y exportados por los paquetes en el array @ISA estan disponibles en el módulo cliente.
Casiano Rodríguez León