sub compare { my $x = shift; print "\$a = $a, \$b = $b, \$x = $x, \@_ = @_\n"; $a cmp $b; } sub test { sort compare 'z','a','b' } my @z = test('foo', 'bar', 'baz'); print "\@z = @z\n"; output: $a = z, $b = a, $x = foo, @_ = bar baz $a = a, $b = b, $x = bar, @_ = baz $a = b, $b = z, $x = baz, @_ = @z = a b z