如何确定数组引用中的元素数?

vkr*_*ris 12 perl json

这是我面临的情况......

$perl_scalar = decode_json( encode ('utf8',$line));
Run Code Online (Sandbox Code Playgroud)

decode_json返回一个引用.我相信这是一个数组.我如何找到$ perl_scalar的大小?根据Perl文档,使用@name引用数组.有解决方法吗?

该引用由一系列哈希组成.我想得到哈希的数量.

如果我做长度($ perl_scalar),我会得到一些与数组中元素数量不匹配的数字.

KAR*_*ván 29

那将是:

scalar(@{$perl_scalar});
Run Code Online (Sandbox Code Playgroud)

您可以从perlreftut获取更多信息.

您可以将引用的数组复制到正常数组,如下所示:

my @array = @{$perl_scalar};
Run Code Online (Sandbox Code Playgroud)

但在此之前,你应该检查它是否$perl_scalar真的引用了一个数组ref:

if (ref($perl_scalar) eq "ARRAY") {
  my @array = @{$perl_scalar};
  # ...
}
Run Code Online (Sandbox Code Playgroud)

更新

length方法不能用于计算数组的长度,而是用于获取字符串的长度.


Tha*_*aha 5

您还可以使用数组的最后一个索引来计算数组中的元素数量。

my $length = $#{$perl_scalar} + 1;
Run Code Online (Sandbox Code Playgroud)