[英]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.