in reply to Array Sorting Trouble

I can't help but think that the biggest problem is that your using the wrong data structure. From your output requirements, it seems like you need an array of hashes, rather the a hash of arrays.

To that end, the first loop will transform your described structure into what I think would be more appropriate. I've dumped the output to show how I think the data would be better structured.

Of course, if you have the option, and no other code is dependant upon the existing structure, it would be better to build it this way in the first place rather than needing to transform it.

When the data is structured this way, printing the output becomes almost trivial and requires only a simple sort method.

#! perl -sw use strict; use Data::Dumper; local $\=$/; $::X = 2 unless $::X; my %array=( Key_One =>[ 50,25,100,90], Key_Two =>[ 35,18,110,72], Key_Three =>[100,35, 99,82], ); my @columns; for my $i (0..3) { $columns[$i]->{@{$array{$_}}[$i]} = $_ for keys %array; } print Dumper(\@columns); my @names = qw(One Two Three Four); for my $column (@columns) { print $/,'Column ', shift@names; print "$column->{$_} = $_" for (sort{$b <=> $a} keys %$column)[0 . +. $::X-1]; } __DATA__ c:\test>202251 -X=2 $VAR1 = [ { '50' => 'Key_One', '35' => 'Key_Two', '100' => 'Key_Three' }, { '25' => 'Key_One', '18' => 'Key_Two', '35' => 'Key_Three' }, { '110' => 'Key_Two', '99' => 'Key_Three', '100' => 'Key_One' }, { '72' => 'Key_Two', '90' => 'Key_One', '82' => 'Key_Three' } ]; Column One Key_Three = 100 Key_One = 50 Column Two Key_Three = 35 Key_One = 25 Column Three Key_Two = 110 Key_One = 100 Column Four Key_One = 90 Key_Three = 82 c:\test>

Cor! Like yer ring! ... HALO dammit! ... 'Ave it yer way! Hal-lo, Mister la-de-da. ... Like yer ring!