El siguiente ejemplo muestra la construcción de un iterador. El generador podria usarse como sigue:
16 my $row = iterator 1, 4; # creación de un iterador de 1 a 4 17 my $col = iterator 1, 5, 2; # de 1 a 5 pero con paso 2 18 my ($r, $c); 19 while ($row->($r)) { 20 print "$r: "; 21 while ($col->($c)) { 22 print "$c "; 23 } 24 print "\n"; 25 }
Cada llamada a iterators
crea un conjunto nuevo de variables léxicas
y una nueva subrutina anónima. Es posible
simultanear de este modo dos clausuras, cada una con
su propio rango y paso:
lhp@nereida:~/Lperl/src$ perl iterators.pl 1: 1 3 5 2: 1 3 5 3: 1 3 5 4: 1 3 5 lhp@nereida:~/Lperl/src$
Casiano Rodríguez León