On Tue, Aug 09, 2005 at 06:53:33AM -0400, 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},
> );
>
> When I use your suggested code, only the value of N seems to be in @s.
In that case, something like this should do what you want:
my @s = map { $_ -> [0] }
sort { $a->[0] <=> $b->[0] ||
$a->[1] <=> $b->[1] ||
$a->[2] <=> $b->[2] ||
$a->[3] <=> $b->[3] }
map { [ $_, split /\./, $_->{N} ] } @a;
--
Paul Johnson - [EMAIL PROTECTED]
http://www.pjcj.net
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>