这里是我面临的形势......如何确定数组引用中元素的数量?
$perl_scalar = decode_json(encode ('utf8',$line));
decode_json返回引用。我相信这是一个数组。我如何找到$ perl_scalar的大小?根据Perl文档,数组是使用@name引用的。有没有解决方法?这个引用由散列数组组成。我想得到一些哈希值。
如果我做长度($ perl_scalar),我得到一个数字,它不匹配数组中的元素数量。
这里是我面临的形势......如何确定数组引用中元素的数量?
$perl_scalar = decode_json(encode ('utf8',$line));
decode_json返回引用。我相信这是一个数组。我如何找到$ perl_scalar的大小?根据Perl文档,数组是使用@name引用的。有没有解决方法?这个引用由散列数组组成。我想得到一些哈希值。
如果我做长度($ perl_scalar),我得到一个数字,它不匹配数组中的元素数量。
这将是:
scalar(@{$perl_scalar});
您可以从perlreftut获得更多的信息。
您可以参考阵列复制到一个正常的是这样的:
my @array = @{$perl_scalar};
但在此之前,你应该检查$perl_scalar
是否真的引用一个数组,ref
:
if (ref($perl_scalar) eq "ARRAY") {
my @array = @{$perl_scalar};
# ...
}
更新
length
方法不能用于计算数组的长度,它用于获取字符串的长度。
你可以看到整个结构与数据::自卸车:
use Data::Dumper;
print Dumper $perl_scalar;
数据::翻车机是安装在Perl的标准模块。有关所有标准语用和模块的完整列表,请参阅perldoc perlmodlib
。
$num_of_hashes = @{$perl_scalar};
由于您将分配给标量,因此解除引用的数组将在标量上下文中评估为元素数量。
如果您需要强制标量上下文,请按照KARASZI的说法使用scalar
函数。
您也可以使用数组的最后一个索引来计算数组中的元素数。
my $length = $#{$perl_scalar} + 1;