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++ }; #### perl -e 'print sub { "Hello @{[shift]}!\n" }->("World")'