copy from http://www.devx.com/tips/Tip/5283
The Perl sort function is useful for alphabetically sorting lists. However, you can’t use it on a list of lists, because once a list starts listing other lists, they cease to be lists and become references instead. By sorting arrays within arrays, it’s possible to gain relational database-like control over data grids.
For example, let’s say I have a list of lists called @biglist. To print all of its unsorted contents, I would write:
for $list_ref ( @biglist ) { print "@$list_ref\n"; }
To sort @biglist by the first element in each list, I would write:
for $list_ref ( sort { $a->[0] <=> $b->[0] } @biglist ) { print "@$list_ref\n"; }
If the array element that you wish to sort is not numeric then change the ” to ‘cmp’ to sort asciibetically:
for $list_ref ( sort { $a->[0] cmp $b->[0] } @biglist ) { print "@$list_ref\n"; }
also, should you wish to not sort in a case-sensitive way:
for $list_ref ( sort { lc($a->[0]) cmp lc($b->[0]) } @biglist ) { print "@$list_ref\n"; }