Liste auf x Elemente kürzen
dobra
- perl
0 Helmut Weber0 dobra
0 Skrilax0 Struppi
Hallo,
Komme wieder mal mit einem Problemchen nicht weiter:
if ($#Liste >= 12) { pop(@Liste);
= wenn mehr als 12 Elemente (Elemente ist vermutlich nicht richtig, aber ich hoffe ihr wißt, was ich meine) in der Liste stehen, das letzte entfernen.
Das habe ich geschafft.
Wie kann ich aber erreichen, daß wenn z.B. 15 Elemente vorhanden sind, ALLE bis auf die ersten 12 entfern werden?
Geht das irgendwie?
Ich komme einfach nicht dahinter, WIE ich die Anweisung schreiben muß...
Danke für jede Hilfe
dobra
Hallo dobra,
Du kannst die Variable $#Liste nicht nur auslesen, sondern auch einen Wert zuweisen.
Wenn Du also schreibst:
$#Liste = 12;
wird ein Array auf 12 Elemente gekürzt, und das ist glaube ich genau das, was Du wolltest.
Herzliche Grüße aus Weinsberg
Helmut Weber
$#Liste = 12; wird ein Array auf 12 Elemente gekürzt, und das ist glaube ich genau das, was Du wolltest.
Hab' ich mir gespeichert - Danke Für DIESEN Fall geht's aber leider nicht, da die Liste dynamisch erzeugt wird - also auch kürzer als 12 Elemente sein kann.
while ($#Liste >= 12) { pop @Liste }
DAS funktioniert für mein Problem
DANKE euch beiden dobra
Hallo!
if ($#Liste >= 12) { pop(@Liste);
Ahja, eine if-Schleife? ;)
while ($#Liste >= 12) { pop @Liste }
sollte da wohl besser funktionieren
Oder du machst es per Slice:
@Liste = @Liste[0..11];
Grüße, Skrilax
Wie kann ich aber erreichen, daß wenn z.B. 15 Elemente vorhanden sind, ALLE bis auf die ersten 12 entfern werden?
z.b. so:~~~perl
my @arr = qw/1 2 3 4 5 6 7 8 9 10 11 12 13 14/;
my @new_arr = @arr > 11 ? @arr[0..11] : @arr;
use Data::Dumper;
print Dumper @new_arr;
Struppi.