Jeremy Kister wrote: > On 8/9/2005 6:26 AM, Paul Johnson wrote: >>my @s = map { $_ -> [0] } >> sort { $a->[0] <=> $b->[0] || >> $a->[1] <=> $b->[1] || >> $a->[2] <=> $b->[2] || >> $a->[3] <=> $b->[3] } >> map { [ $_, split /\./ ] } >> map { $_->{N} } @a; > > You clearly solved the problem that I asked, but... :) > > I've apparently dumbed down my code and question a bit too much: I have > multiple hashrefs in each element of the array, and I need the resulting > sorted array to contain all the data in the original array, simply > sorted by the value of N. > > my @a = ( {N => '10.1.2.1', ID => 1}, > {N => '10.1.9.1', ID => 2}, > {N => '10.3.5.1', ID => 3}, > {N => '10.1.1.3', ID => 4}, > );
$ perl -e' use Socket; use Data::Dumper; my @a = ( { N => "10.1.2.1", ID => 1 }, { N => "10.1.9.1", ID => 2 }, { N => "10.3.5.1", ID => 3 }, { N => "10.1.1.3", ID => 4 }, ); my @s = map $_->[ 1 ], sort { $a->[ 0 ] cmp $b->[ 0 ] } map [ inet_aton( $_->{ N } ), $_ ], @a; print Dumper [EMAIL PROTECTED]; ' $VAR1 = [ { 'ID' => 4, 'N' => '10.1.1.3' }, { 'ID' => 1, 'N' => '10.1.2.1' }, { 'ID' => 2, 'N' => '10.1.9.1' }, { 'ID' => 3, 'N' => '10.3.5.1' } ]; John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>