for my $m (sort nameFirst ('fred', 'alf', 'tom', 'bert', 'name', 'pete')) { print "$m\n"; } sub nameFirst { if ($a eq 'name') { -1; } elsif ($b eq 'name') { 1; } else { 0; } } #### name fred alf tom bert pete #### sub nameBlahAref { naeval($a) <=> naeval($b); } sub naeval { $_[0] eq 'name' and return 1; $_[0] eq 'aref' and return 3; return 2; }