Peter Kaufmann: Möglichkeiten bei der Namensgebung von Arrays

Beitrag lesen

Das Skript sollje sechs Elemente aus @News zusammenfassen und in einem anderen Array speichern. Wenn ich das Skript so wie oben beschrieben abändere, gibt er mir auch nur einen Wert aus und nicht sechs.

Dein Problem ist das Array @Artikelteil. Das Array ist global, das heißt das du immer wieder in @Artikel eine Referenz auf das _selbe_ Array geschrieben hast. Leider ist es in deinem Script nicht möglich @Artikelteil lokal für ein Durchlauf mit 6 Elementen zu definieren.

Es gibt sicherlich elegantere Lösungen (z.B. mit Slices) aber das hier ist mein spontanter 1-Minute-Hack Einfall für dein Problem gewesen:

#! /usr/bin/perl -w

my @News = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
my $w = 6; # jeweils 6 Elemente in ein Array
my @partial = ();
while ($#News > 0) {
 my @mem = (); # neues leeres _lokales_ Array
 for ($j=0; $j<$w && $#News > 0; $j++) {
  push(@mem, shift @News); # entferne 1 Element aus @News und
                                         # hänge es an @mem an.
 }
 push(@partial, @mem); # hänge Referenz auf @mem an @partial an
}

nur zur Kontrolle ;-)

foreach my $ptr (@partial) {
 print join(':',@{$ptr}),"\n";
}

1:2:3:4:5:6

7:8:9:10:11:12

13:14

Ich hoffe das hilft dir vorerst weiter.

Grüße Peter