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
