• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

SOLVED: [PERL] foreach Variable ist nach der Schleife leer?

mr_kaktus

Member
Hi @all,

kann mir jemand erklären was hier schief läuft?
Ich öffne mit perl eine Datei mit dem DateiHandle USERLIST, lass sie über eine eine foreach-Schleife laufen, greife mir bestimmte Zeilen und fülle damit ein List-Array @dn_einzel. Wenn ich mit dem List-Array weiter arbeiten will, dann ist dieser leer?
Code:
my @dn_einzel; # List-Array definieren
foreach (<USERLIST>){
   @dn_einzel=grep(/^dn:/,$_);
}
print @dn_einzel;

Wenn ich mir aber die Variable innerhalb der schleife ausgeben lasse, dann funkt das:
Code:
my @dn_einzel; # List-Array definieren
foreach (<USERLIST>){
   @dn_einzel=grep(/^dn:/,$_);
   print @dn_einzel;
}
Kann mir mal jemand erklären wie das kommt?
Ich habe doch die Variable außerhalb der schleife definiert, warum kann ich jetzt nur innerhalb der Schleife darauf zugreifen?
 

ginka

Member
Du legst in jedem Schleifendurchlauf das Array @dn_einzel neu an und überschreibst damit jeweils das was du zuvor eingefüllt hast. Dein Array enthält also nach Ende der Schleife je nach Inhalt der eingelesenen Datei maximal ein Element.

Besser, du füllst dein Array @dn_einzel z.B. mit der Funktion push(), also etwa
Code:
push @dn_einzel, grep(/^dn:/,$_);

Viele Grüße
ginka
 
Oben