in reply to
Top and bottom 10 percent elements of an array
This works better for the given elements. It gives the result as you need.
Refer splice to know about it.
my @array = (2 ,4, 3, 8, 9, 12, 13, 20, 18, 7 );
my $percent = (scalar @array * 0.20);
my (@resultA, @resultB);
my @ordered = sort {$a <=> $b} @array;
@resultB = splice(@ordered, 0, $percent);
@resultA = splice(@ordered, (scalar @ordered - $percent));
print "@array", "\n";
for (my $i=0; $i < scalar @array; $i++) {
if ( grep { $array[$i] eq $_ } @resultA ) {
$array[$i] = 'A';
}
elsif ( grep { $array[$i] eq $_ } @resultB ) {
$array[$i] = 'B';
}
else {
$array[$i] = '-';
}
}
print "@array", "\n";