{ my ($end, $curr, $result); my $_factorial; $_factorial = sub { return $result if $curr > $end; $result *= $curr++; $_factorial->(); }; sub fact4 { ($end, $curr, $result) = (shift, 1, 1); $_factorial->(); } } #### dragonchild: 4 wallclock secs ( 3.19 usr + 0.00 sys = 3.19 CPU) @ 122695.46/s (n=392012) lexical: 3 wallclock secs ( 3.10 usr + 0.00 sys = 3.10 CPU) @ 21976.48/s (n=68215) recursion: 3 wallclock secs ( 3.08 usr + 0.00 sys = 3.08 CPU) @ 91202.59/s (n=281360) typeglob: 4 wallclock secs ( 3.14 usr + 0.00 sys = 3.14 CPU) @ 21142.77/s (n=66494)