这是我面临的情况...
$perl_scalar = decode_json( encode ('utf8',$line));
decode_json返回一个引用。我确定这是一个数组。如何找到$perl_scalar的大小?根据Perl文档,可以使用@name引用数组。是否有解决方法?
这个引用包含一组哈希数组。我想获取哈希的数量。
如果我使用length($perl_scalar),我得到的数字与数组中元素的数量不匹配。
那将会是:
scalar(@{$perl_scalar});
你可以从perlreftut获取更多信息。
你可以像这样将被引用的数组复制到普通数组中:
my @array = @{$perl_scalar};
但在此之前,您应该使用ref
函数检查$perl_scalar
是否确实引用了一个数组:
if (ref($perl_scalar) eq "ARRAY") {
my @array = @{$perl_scalar};
# ...
}
无法使用 length
方法来计算数组的长度,它是用于获取字符串的长度。
您还可以使用数组的最后一个索引来计算数组中元素的数量。
my $length = $#{$perl_scalar} + 1;
$num_of_hashes = @{$perl_scalar};
由于您正在分配给一个标量,因此取消引用的数组在标量上下文中求值为元素数量。
如果您需要强制使用标量上下文,请按照KARASZI所说使用scalar
函数。
use Data::Dumper;
print Dumper $perl_scalar;
Data::Dumper是一个与Perl一起安装的标准模块。要获取所有标准语法和模块的完整列表,请参阅perldoc perlmodlib
。