Hallo Beate!
Um Deine jetzige Frage zu beantworten, habe ich gerade mal in eine der Perl FAQs geschaut, und hab dort doch noch eine Antwort auf die urspruengliche Frage gefunden: http://www.activestate.com/activeperl/docs/lib/Pod/perlfaq4.html#What_is_the_difference_between_. Der Unterschied zwischen $arrayname[0] und @arrayname[0] ist, dass ersteres einen normalen skalaren Wert darstellt, das zweite jedoch eine Liste mit einem einzigen Element (naemlich eben dem Skalar). Da der zweite Anwendungsfall aber in Praxis fast nie vorkommt, wird man durch -w vor einem eventuellen Syntaxfehler gewarnt.
Hast recht. Uebrigens kennst Du einen aehnlichen Ausdruck wie diesen
@test1 = @{$arrayname[0]};
um aus einem zweidimensionalen Array eine Spalte auszugeben? Ich meine ohne Schleife, als einfachen Ausdruck wie hier bei der Zeilenausgabe.
Dazu habe ich aber leider nichts gefunden. Falls es sich nur um eine sehr kleine Matrix handelt, kannst Du z.B. mit
@test4 = ($$arrayname[0][$s], $$arrayname[1][$s], $$arrayname[2][$s], $$arrayname[4][$s]);
alle Elemente eigenhaendig hinschreiben ($s ist die Spaltennummer). Ansonsten scheint wohl wirklich nur die Schleife zu bleiben:
for (@arrayname) { push(@test4, $_->[$s] } # oder:
for (@arrayname) { push(@test4, ${$_}[$s] }
Mehr weiss ich auch nicht.
Bis dann, Roland