Bioops

Bioinformatics=(ACGAAG->AK)+(#!/bin/sh)+(P(A|B)=P(B|A)*P(A)/P(B))

Perl: Sorting a Two-Dimensional Array

| Comments

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";
}

Comments