http://www.perlmonks.org?node_id=1001665

maladav has asked for the wisdom of the Perl Monks concerning the following question:

Hi PerlMonks,

I'm working with the following data structure:

#corrected code from first replies my @inner1 = (0, 1, 2); my @inner2 = (1, 4, 7); my @inner3 = (2, 5, 8); my @inner4 = (6, 7, 9); my @array1 = (\@inner1, \@inner2, \@inner3, \@inner4); my @array2 = (\@inner1, \@inner2, \@inner3, \@inner4); my %hash = ('array1', \@array1, 'array2', \@array2);

So this is a 3-dimensional array which I'd like to sort numerically ascending by the 2nd elements of the innermost arrays, to get something like:

(6, 7, 9) (2, 5, 8) (1, 4, 7) (0, 1, 2)

This is what I was trying with no success (for my script I need to sort only one array at a time):

foreach my $i (sort { $hash{array1}[$b][1] <=> $hash{array1}[$a][1] } +@{$hash{array1}}) { print @$i[1], "\n"; }

When testing I get back the original order of elements in the middle array.
Can anyone help why?

Thanks!