数组内部的数组插值

VAR*_*121 3 arrays perl

当我试图在数组中打印特定元素时,我错误地在[]内输入了相同数组的名称作为元素,并获得了一些输出,如图所示.我认为它占用了数组的大小并打印了那些字符,这被输出证明是错误的.

@array = (0..10, 12);

print "@array[@array]";
Run Code Online (Sandbox Code Playgroud)

版画

 Use of uninitialized value in join or string at
 /home/VAR121/Program/Practise_Perl/Arrays.pl line 9.
 0 1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)

我向前迈了一步,编辑了如下所示的代码

print "@array[@array[@array]]";

output as: `0 1 2 3 4 5 6 7 8 9 10 0`  Use of uninitialized value in join or string at
 /home/VAR121/Program/Practise_Perl/Arrays.pl line 9.
Run Code Online (Sandbox Code Playgroud)

现在我尝试在第二个数组中放入一个数字,而不是再次给出数组名称,如下所示.

print "@array[@array[1,2,3]]";
Run Code Online (Sandbox Code Playgroud)

输出为

 1 2 3
Run Code Online (Sandbox Code Playgroud)

但这次没有警告信息.

是什么打印?这种行为背后的原因是什么?

Dav*_*idO 9

你正在创建一个数组切片.首先要了解您的数组包含元素0,1,2,3,4,5,6,7,8,9,10,12.

这总共有12个元素(没有值11,但在索引11处存储值12).

现在当你使用这个结构时:@array[@array]你正在切片,并请求存储在索引0,1,2,3,4,5,6,7,8,9,10和12中的值.没有元素索引为12的数组.第十一个元素的值为"12".