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.
In reply to Re: Sort array1 according to sorting of array2
by revdiablo
in thread Sort array1 according to sorting of array2
by noname00
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |