use strict; my @list = qw/ box cow dog apple ant/; # A "normal" use of sort my @sorted = sort {$a cmp $b} @list; print join (',', @sorted), "\n"; #return the sort sub and count in a list sub mcc { my $count = 0; return (sub {$count++; $_->[0] cmp $_->[1] }, $count); } # see below my @f = mcc(); # why can't I say something like mcc()[0] ??? print sort {$f[0]} @list;