my @mother= qw( a b d e c g f i h ); my @father= qw( b c a d e f h i g ); my %avgPos; for my $av ( \@mother, \@father ) { for my $i ( 0 .. $#$av ) { $avgPos{$av->[$i]} += $i/2; } } print " $_ => $avgPos{$_}\n" for keys %avgPos; my @son= sort { $avgPos{$a} <=> $avgPos{$b} } @mother; print "( @son )\n"; __END__ e => 3.5 a => 1 d => 2.5 c => 2.5 h => 7 b => 0.5 g => 6.5 f => 5.5 i => 7 ( b a d c e f g i h )