dobra: Liste auf x Elemente kürzen

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

  1. 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

    --
    -------------------------------------------
    Mode ist eine Variable, Stil eine Konstante
    1. $#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

  2. 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

    --
    Democracy is a device which ensures that we shall be governed no better than we deserve.
    (G. B. Shaw)
  3. 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.