The following prints exactly what you asked for (as I read it). I'm not sure this is what you mean though.
use strict; use warnings; my @matrix = ( {A => 22, C => 51, G => 7, T => 0}, {A => 9, C => 30, G => 0, T => 2}, ); for my $h (@matrix) { my @temp; print "[ "; for my $k (sort {$h->{$b} <=> $h->{$a}} (keys(%{$h}))) { print "$h->{$k} "; push @temp, $k } print "@temp ]\n" }
UPDATE: Modified to address your updates above. Note this *PRINTS* what you want, it doesn't put the date into a new structure - you can figure that part out.
use strict; use warnings; my @matrix = ( {A => 4, C => 0, G => 13, T => 0}, {A => 5, C => 0, G => 12, T => 0}, {A => 15, C => 0, G => 2, T => 0}, {A => 0, C => 17, G => 0, T => 0}, ); for my $h (0..$#matrix) { my @temp; print "[ $h "; for my $k (sort {$matrix[$h]->{$b} <=> $matrix[$h]->{$a}} (keys(%{ +$matrix[$h]}))) { print "$matrix[$h]->{$k} "; push @temp, $k } print "@temp ]\n" }
In reply to Re: Complex sort of array of hashes into an array of arrays
by VinsWorldcom
in thread Complex sort of array of hashes into an array of arrays
by BioJL
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |