Hallo,
ich will eigentlich nur ein Element aus einer Perl- Listen Variable (@) löschen.
Es gibt ja die "build in" Funktion "delete" diese liefert bei mir folgende Ergebnisse:
Wie bei (1),(2) und (3) wird das Listenelemnt nicht wirklich gelöscht sondern nur der Wert mit "undef" überschrieben. Was ja eigentlich auch wie folgt gehen würde:
Nur bei (4) hat er das Element wirklich entfernt und nicht nur den Wert überschrieben.
Ich will aber die Elemente überall löschen und nicht nur mit undef überschreiben.
Für den ersten Fall (1) könnte ich zwar auch shift nehmen aber in der Regel liegen die Listenelement die ich entfernen möchte nicht am Anfang oder am Ende der Listenvariablen. Wie kann ich Listenelemnte wirklich entfernen?
Auf die Verwendung von "tie" oder externen Modulen würde ich gern verzichten
ich will eigentlich nur ein Element aus einer Perl- Listen Variable (@) löschen.
Es gibt ja die "build in" Funktion "delete" diese liefert bei mir folgende Ergebnisse:
Code:
my @oliste = (1,2,3,4);
my @liste1 = @oliste;
delete $liste1[0]; # ->(undef,2,3,4) (1)
my @liste2 = @oliste;
delete $liste2[1]; # ->(1,undef,3,4) (2)
my @liste3 = @oliste;
delete $liste3[2]; # ->(1,2,undef,4) (3)
my @liste4 = @oliste;
delete $liste4[3]; # ->(1,2,3) (4)
Wie bei (1),(2) und (3) wird das Listenelemnt nicht wirklich gelöscht sondern nur der Wert mit "undef" überschrieben. Was ja eigentlich auch wie folgt gehen würde:
Code:
$liste1[0] = undef;
Nur bei (4) hat er das Element wirklich entfernt und nicht nur den Wert überschrieben.
Ich will aber die Elemente überall löschen und nicht nur mit undef überschreiben.
Für den ersten Fall (1) könnte ich zwar auch shift nehmen aber in der Regel liegen die Listenelement die ich entfernen möchte nicht am Anfang oder am Ende der Listenvariablen. Wie kann ich Listenelemnte wirklich entfernen?
Auf die Verwendung von "tie" oder externen Modulen würde ich gern verzichten