sub createcircle { my ($foo, $bar) = @_; my $qux; my $quux = sub { if (shift==$foo) { $bar } else { $qux->() } }; $qux = sub { $quux->(shift - 1) }; return $quux; }