Heredando de Exporter

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
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19