[英]How can I initialize a 2D array in Perl?
如何在Perl中初始化2D數組?
我正在嘗試以下代碼:
0 use strict;
10 my @frame_events = (((1) x 10), ((1) x 10));
20 print "$frame_events[1][1]\n";
但它給出以下錯誤:
在./dyn_pf.pl第20行使用“strict refs”時,不能使用字符串(“1”)作為ARRAY引用。
這種語法似乎只是初始化一維數組,因為打印“$ frame_events [1] \\ n”有效。 雖然Perl在分配期間沒有給出任何錯誤。
你不能在Perl中有一個數組數組,只有一個數組引用數組。
my @frame_events = ([(1) x 10], [(1) x 10]);
print "$frame_events[1]->[1]\n";
特殊情況:您可以省略相鄰括號之間的指針解引用箭頭(無論是方形還是卷曲):
print "$frame_events[1][1]\n";
一般來說,你不能有:
你可以 :
你也可以:
在Perl中,一個包含兩個數組的數組將合並為一個數組。 如果不希望它們連接,您需要內部數組的引用。 這是您的代碼轉儲:
use strict;
use Data::Dumper;
my @frame_events = (((1) x 10), ((1) x 10));
print Dumper(\@frame_events);
結果:
$VAR1 = [
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1
];
如果你切換到數組引用創建者,括號而不是父代,使用此代碼:
use strict;
use Data::Dumper;
my @frame_events = ([(1) x 10], [(1) x 10]);
print Dumper(\@frame_events);
你得到這個:
$VAR1 = [
[
1,
1,
1,
1,
1,
1,
1,
1,
1,
1
],
[
1,
1,
1,
1,
1,
1,
1,
1,
1,
1
]
];
最快的方法是使用push命令。
$ size = 10; 推送@matrix,[(0)x $ size]為(0 .. $ size);
這將創建一個用零初始化的10x10數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.