sub fibonacci { my ($i, $j) = (0, 1); return ( \$i, sub { _fibonacci($i, $j) } ); } sub _fibonacci { my ($i, $j) = @_; return ( \$j, sub { _fibonacci($j, $i+$j) } ); }