Hi, was experimenting with your code, couldn't solve it but here are my 2 cents.
use strict ;
use warnings ;
use Data::Dumper ;
my @limit = (reverse 1..5) ;
my $limit = { _l => \@limit } ;
bless ( $limit, 'limit' ) ;
sub countdown {
my $val = shift ;
my $iter = sub {
if ( $val-- ) {
$_[0] = $val ;
return 1 ;
}
return ;
} ;
return $iter ;
}
while ( my $iter = $limit->Next( *countdown ) ) {
while ( $iter->( my $a ) ) {
print "$a: " ;
}
print "\n" ;
}
package limit ;
use strict ;
use warnings ;
use Data::Dumper ;
sub Next {
my $this = shift ;
if ( @{$this->{_l}} ) {
return $_[0]->( shift @{$this->{_l}} ) ;
}
return ;
} ;