use strict; no warnings; # So many that they hide the output. { package Foo; sub doit { my ($sorter, @keys) = @_; return sort $sorter @keys; } } my @foo = (3, 1, 2); print '$a: ', join(' ', Foo::doit(sub { $a <=> $b }, @foo)), "\n"; print '@_: ', join(' ', Foo::doit(sub ($$) { $_[0] <=> $_[1] }, @foo)), "\n"; __END__ $a: 3 1 2 @_: 1 2 3