in reply to sorting with Schwartzian Transform

How about
@sorted = map { $_->[0] } sort { $a->[1] <=> $b->[1] } map { [ $_, (split /[,.]/, $_)[$idx] ] } @array;
Where $idx is the column number you care about. If @array contains newlines, that might spew warnings... try
map { chomp(my $key = (split /[,.]/, $_)[$idx]); [ $_, $key ] } @array;