为什么在 Perl 中为数组变量分配列表引用有效?

Tho*_*ing 2 arrays perl reference

我有以下三个作业,其中第二个看起来不标准:

my $realRef = [1, 2, 3];
my @nonRef  = [4, 5, 6];
my $nonRef  = [7, 8, 9];
Run Code Online (Sandbox Code Playgroud)

第二个实际上应该是以下内容:

my @nonRef  = (4, 5, 6);
Run Code Online (Sandbox Code Playgroud)

打印时,所有三个变量都包含数组引用,尤其是同名变量,只是不同之处@$不会共享相同的数据或相互覆盖。

Ref: ARRAY(0x1fd6a8); $VAR1 = [
          1,
          2,
          3
        ];
Ref: ARRAY(0x6445d8); $VAR1 = [
          4,
          5,
          6
        ];
Ref: ARRAY(0x644740); $VAR1 = [
          7,
          8,
          9
        ];
Run Code Online (Sandbox Code Playgroud)

为什么完全@nonRef包含数组引用?那是存储在$nonRef符号表条目中nonRef还是类似的东西?为什么值@nonRef$nonRef不重叠?两者不都是只参照不同的插槽,相同的符号表项ARRAY主场迎战SCALAR?因为最后两个存储引用,我本来希望使用与插槽相同的符号表条目SCALAR

谢谢!

hob*_*bbs 5

第二个与my @nonRef = ([4, 5, 6])- 也就是说,您只是将 arrayref 放入$nonRef[0].