Thread matrix in loop aufbauen mit Referenzen als zeilen (7 answers)
Opened by kajax01 at 2011-02-09 20:29

topeg
 2011-02-12 06:36
#145598 #145598
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
2011-02-11T10:53:53 kajax01
Also von der Aufgabenstellung her hat am Besten das vorletzte
Beispiel von @topeg gepasst, [...]
Aber das ist doch dann keine Ref auf ein array, sondern ein normales, nicht?

Doch es ist ein "AoA" ein "Array of Arrays" und die enthaltenen Arrays sind Array-Referenzen. Die Referenzen werden von perl automatisch angelegt wenn sie gebraucht werden (siehe "Autovivikation").


2011-02-11T10:53:53 kajax01
a) was bedeutet eigentlich die -1 bei

push(@{$matrix[-1]},"A")?

Das ist der letzte Eintrag in @matix. Da in dem Beispiel mit push( @matix, []) für jede Zeile ein neues Anonymes Array hinzugefügt wird, und diese befüllt werden soll, muss immer der zuletzt eingetragene Wert in @array adressiert werden.


2011-02-11T10:53:53 kajax01
b) wenn ich den print cmd benutze,

print join(', ' @$_), "\n" for(@matrix);

bringt er die msg:

Array found where operator expected at arr1.pl line 14, near "', ' "

Ja da habe ich ein Komma vergessen, entschuldige.
die Zeile muss lauten :
Code (perl): (dl )
print join(', ', @$_), "\n" for(@matrix);



2011-02-11T10:53:53 kajax01
Was bedeutet genau dieses @$_ ?


$_ enthält an der Stelle eine Array-Referenz, damit join damit umgehen kann, muss das Array dereferenziert werden. Das kann man durch das vorstellen von "@" machen.

View full thread matrix in loop aufbauen mit Referenzen als zeilen