Mik*_*ike 4 arrays perl reference
考虑一下这个Perl代码
my @a=[[1]];
print $a[0][0];
**output**
ARRAY(0x229e8)
Run Code Online (Sandbox Code Playgroud)
为什么打印ARRAY
而不是1
?我本来希望@a
创建一个大小为1的数组,引用第二个只包含一个元素的数组1
.
mob*_*mob 14
这个东西很棘手.您已将其指定@a
为包含对包含对数组的引用的数组的引用的列表,这是一个比您预期的更多的间接层.
为了得到你期望的结果,你应该说
@a = ( [ 1 ] );
Run Code Online (Sandbox Code Playgroud)
Axe*_*man 11
你想要的价值是$a[0][0][0]
.您将数组引用指定为数组的第一个元素@a
.
这是类似的事情:
my @a = 'scalar';
Run Code Online (Sandbox Code Playgroud)
这将创建一个包含1个插槽的数组,其中字符串'scalar'
作为唯一元素.因此,当您为数组指定标量时,Perl会尝试执行您想要的操作并创建大小为1的列表,标量值为第一个元素.
也,
my @a = undef;
Run Code Online (Sandbox Code Playgroud)
做同样的事情,但第一个插槽是undef
.你想要的是什么
my @a = [1];
Run Code Online (Sandbox Code Playgroud)