# die ersten 4 Zeilen bleiben frei ($x fängt erst bei Index 4 an, gehe bis Zeil 8 for $x (4..7) { # für die ersten drei Spalten (der entsprechenden Zeile) for $y (0..2) { # schreibe in die Zelle das Ergebnis von func $AoA[$x][$y] = func($x, $y) } } $x = "Perl"; $y = "ist spitze"; # für jede Zeile 5 - 8: schreibe in Zelle 2 das Ergebnis von func1 foreach (4..7) { $AoA[$_][1] = func1($x, $y); } # füge an Zeile 7 noch "na" und "klar" an (sind also 2 weitere Zellen) push @{$AoA[6]}, "na","klar"; # iteriere (laufe) über jedes Element (Zeile) for $i (0.."$#AoA") { # iteriere über jedes Element des Anonymen Arrays (Spalte) for (0.."$#{$AoA[$i]}") { # gebe das Element (Zelle) aus print "$i,$_: $AoA[$i][$_] "; } print "\n"; } # gebe den Wert der 7.Zeile und 5. Spalte wieder (G6) print "Wert: $AoA[6][4]\n"; # hier wird das Produkt der beiden Parameter zurückgegeben, obwohl # kein explizites return angegeben ist. Ist ein return nicht explizit vorhanden, # wird der Wert des zuletzt evaluierten Ausdrucks zurückgegeben. # Die Parameter stehen in dem Array @_ . Das shift holt sich den ersten Wert # aus dem Array, das angegeben ist (shift(@array)), oder - wenn nix angegeben # ist aus @_ # Das Ergebnis wird in $_ gespeichert, weil keine Variable explizit angegeben ist sub func { (shift)*(shift); } # hier wird automatisch der zweite Parameter wieder zurückgegeben, # obwohl kein explizites return angegeben ist. sub func1{ shift; $_[0]; }