That looks a lot like a method used in
Effective Perl Programming (see item 14 in the idiomatic perl pdf)
The goal is to sort /etc/passwd by the third field:
open PASSWD, "/etc/passwd" or die;
@passwd = <PASSWD>;
@key = map # Create an array @key contain
+ing
{ (split /:/)[2] } @passwd; # just the keys (user ids).
@by_uid_index = sort { # Sort indices, using @key arr
+ay.
$key[$a] <=> $key[$b]
} 0 .. $#key;
@by_uid = @passwd[@by_uid_index]; # Now, rearrange the contents
+of
# @passwd into sorted order.
Or just combine the last two statements:
@by_uid = @passwd[sort { $key[$a] <=> $key[$b] } 0 .. $#key];
Well, this will work, and it's efficient enough, but there are prettier, more Perl-ish ways to present the solution.
It then goes on to describe the Orcish and Schwartzian under the heading of 'Advanced sorting: the cool ways'
-Blake