$ perl a.pl Benchmark: timing 100 iterations of for_each, for_loop, while_pop, while_shift... for_each: 4 wallclock secs ( 3.85 usr + 0.01 sys = 3.86 CPU) @ 25.91/s (n=100) for_loop: 7 wallclock secs ( 7.36 usr + 0.01 sys = 7.37 CPU) @ 13.57/s (n=100) while_pop: 5 wallclock secs ( 5.35 usr + 0.00 sys = 5.35 CPU) @ 18.69/s (n=100) while_shift: 5 wallclock secs ( 5.38 usr + 0.00 sys = 5.38 CPU) @ 18.59/s (n=100)