标量上下文中的Perl数组

Rab*_*der 3 perl

我是Perl的新手.我正在尝试了解Perl上下文.我有以下Perl代码.

use strict;
use warnings;
use diagnostics;

my @even = [ 0, 2, 4, 6, 8 ];
my @odd = [ 1, 3, 5, 7, 9 ];
my $even1 = @even;
print "$even1\n";
Run Code Online (Sandbox Code Playgroud)

当我执行代码时,我得到以下输出...

1
Run Code Online (Sandbox Code Playgroud)

但是,正如我所读到的,下面的标量上下文应该将数组中的元素数量放在标量变量中.

my $even1 = @even;
Run Code Online (Sandbox Code Playgroud)

所以,这对我来说很奇怪.而且,代码内部会发生什么?

fri*_*edo 8

定义数组的正确语法是

my @even = ( 0, 2, 4, 6, 8 );
my @odd  = ( 1, 3, 5, 7, 9 );
Run Code Online (Sandbox Code Playgroud)

当您使用方括号时,您实际上是在创建一个匿名数组的引用(指针),并将引用存储在@even和中@odd.参考是标量,所以的长度@even@odd为一.

有关引用的更多信息,请参阅Perl参考教程.