in reply to Sort array1 according to sorting of array2
i want to sort @arr1 according to @arr2 sorting
Your example output doesn't really match what you describe. It appears you just want @arr1 sorted according to the numeric value. If that's the case, then ikegami has answered your question. If, instead, you actually want what you describe -- @arr1 sorted according to the order in @arr2 -- then something like this might work:
#!/usr/bin/perl -l use strict; use warnings; my @arr1 = qw(john:::10 bill:::9 mary:::35 willy:::21); my @arr2 = qw(9 35 10 21); my $i = 0; my %order = map { $_ => $i++ } @arr2; print for sort { my ($c) = $a =~ /:::(\d+)$/; my ($d) = $b =~ /:::(\d+)$/; $order{$c} <=> $order{$d} } @arr1;
Notice I used a hash to store the order of each element from @arr2. This is for efficiency -- you could do a search through @arr2 each time, but that wouldn't scale very well.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Sort array1 according to sorting of array2
by noname00 (Novice) on Aug 26, 2004 at 05:39 UTC | |
|
Re^2: Sort array1 according to sorting of array2
by kappa (Chaplain) on Sep 07, 2004 at 11:30 UTC |