Thread Bei "for" durch einen Array delete auf sich selbst anwenden (5 answers)
Opened by Gast at 2008-10-20 13:25

Ronnie
 2008-10-20 13:51
#115650 #115650
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Mann kann ein Array auch rückwärts durchlaufen und die entsprechenden Elemente mit splice entfernen, aber die Lösung von pq ist empfehlenswerter!
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl

use strict;
use warnings;

use Data::Dumper;
use Carp;

my @list    = qw{ Tim Bob Susanne Olli Nancy };
my $idx     = $#list;
$list[$idx] eq 'Susanne' and splice (@list, $idx, 1) while($idx-- > 0);

print Dumper \@list;

Geht auch mit einer for-Schleife! Ist wahrscheinlich leichter nachzuvollziehen:
Code (perl): (dl )
1
2
3
4
5
for my $i (reverse (0..$idx)) {
    if ($list[$i] eq 'Susanne') {
        splice (@list, $i, 1);
    }
}

View full thread Bei "for" durch einen Array delete auf sich selbst anwenden