Wie kann ich ein 2D-Array in Perl initialisieren?

8

Wie initialisiere ich ein 2D-Array in Perl?

Ich versuche den folgenden Code:

%Vor%

aber es gibt den folgenden Fehler:

  

String ("1") kann nicht als ARRAY ref verwendet werden, während "strict refs" in ./dyn_pf.pl Zeile 20 verwendet wird.

Diese Syntax scheint nur ein 1D Array zu initialisieren, da print "$ frame_events [1] \ n" funktioniert. Obwohl Perl während der Zuweisung keinen Fehler gibt.

    
Mark 13.03.2010, 02:40
quelle

4 Antworten

13

Sie können kein Array von Arrays in Perl haben, sondern nur ein Array von Referenzen auf Arrays.

%Vor%

Sonderfall: Sie können den Pfeil zur Dereferenzierung des Zeigers zwischen benachbarten Klammern (egal ob quadratisch oder lockig) weglassen:

%Vor%

Im Allgemeinen können Sie nicht haben:

  • Arrays von Arrays (von Arrays ...)
  • Arrays von Hashes (von ...)
  • Hashes von Arrays
  • Hashes von Hashes.

Sie können Folgendes haben:

  • Arrays von Referenzen auf Arrays (von Referenzen auf Arrays ...)
  • Arrays von Referenzen auf Hashes (von Referenzen auf ...)
  • Hashes von Referenzen auf Arrays
  • Hashes von Referenzen auf Hashes

Sie können auch:

  • Arrays von Skalaren
  • Arrays von Referenzen von Arrays von Skalaren
  • Arrays von Referenzen von Arrays von Referenzen von Arrays von Skalaren
  • Arrays von Referenzen von Hashes von Skalaren
  • usw.
vladr 13.03.2010, 02:47
quelle
1

In Perl wird ein Array mit zwei Arrays in ein Array zusammengeführt. Sie möchten Referenzen für die internen Arrays, wenn Sie nicht verkettet werden wollen. Hier ist ein Dump deines Codes:

%Vor%

Ergebnis:

%Vor%

und wenn Sie zu Array-Referenz-Ersteller, Klammern statt Eltern, mit diesem Code wechseln:

%Vor%

Du bekommst das:

%Vor%     
Ry4an Brase 13.03.2010 02:57
quelle
0

Der schnellste Weg ist die Verwendung des Push-Befehls.

$ size = 10; push @matrix, [(0) x $ size] für (0 .. $ size);

Dadurch wird ein 10x10-Array erstellt, das mit Nullen initialisiert wird.

    
kwatts 26.08.2017 19:50
quelle

Tags und Links