Warscheinlich viel zu umständlich sollte folgendes dein gewünschtes Ergebnis erzielen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# get doubles
my %seen;
foreach my$key (@found) {
my @ele = split("\t", $key);
$seen{$ele[-1]} = [] unless $seen{$ele[-1]};
push(@{$seen{$ele[-1]}}, [$i, $ele[0]]);
}
# delete doubles
my $i = 0;
foreach my$key (keys %seen) {
if (@{$seen{$key}} > 1) {
# sort
my $top = $seen{$key}->[0];
foreach my$act (@{$seen{$key}})
{ if ($act->[1] > $top->[1]) { $top = $act } }
# splice
foreach my$act (@{$seen{$key}})
{ if ($act->[0] != $top->[0]) { splice(@found, $act->[0]-$i, 1); ++$i } }
}
}
MfG