my $p = sub {
my $n = 2;
my $g = sub { $n++ };
sub {
my $r = $g->();
$g = sub {
my ($f, $g) = @_;
sub {
while (1) {
my $r = $g->();
return $r if $r % $f;
}
};
}->($r, $g);
$r;
};
}->();
while ((my $n = $p->()) < 500) {
print "$n\n";
}
$g = sub { $n++ };
which is captured by the closure $p.
perl -e 'print sub { "Hello @{[shift]}!\n" }->("World")'
perlmonks.org content © perlmonks.org and billh
prlmnks.org © 2006 edmund von der burg (eccles & toad)
v 0.03