($x,$y)=($y,$x); #### use Benchmark 'cmpthese'; use strict; my ($x,$y,$u)=(1,2); sub swapL{ ($x,$y)=($y,$x); } sub swapTt{ my $t=$x; $x=$y; $y=$t; } sub swapTu{ $u=$x; $x=$y; $y=$u; } cmpthese (-10,{list =>\&swapL, mytmp=>\&swapTt, glbtmp=>\&swapTu}); __END__ Benchmark: running glbtmp, list, mytmp, each for at least 10 CPU seconds... glbtmp: 11 wallclocks (10.01 usr + 0.00 sys = 10.01 CPU) @ 1063530.80/s (n=10651261) list: 13 wallclocks (10.19 usr + 0.00 sys = 10.19 CPU) @ 656331.40/s (n= 6686048) mytmp: 9 wallclocks (10.27 usr + 0.00 sys = 10.27 CPU) @ 905807.23/s (n= 9299017) Rate list mytmp glbtmp list 656331/s -- -28% -38% mytmp 905807/s 38% -- -15% glbtmp 1063531/s 62% 17% --