如何确定数组引用中的元素数量?
这是我面临的情况...
$perl_scalar = decode_json( encode ('utf8',$line));
decode_json 返回一个引用。我确信这是一个数组。如何找到 $perl_scalar 的大小?根据 Perl 文档,数组是使用 @name 引用的。有解决方法吗?
该引用由哈希数组组成。我想获得哈希值的数量。
如果我执行 length($perl_scalar) ,我会得到一些与数组中元素数量不匹配的数字。
Here is the situation I am facing...
$perl_scalar = decode_json( encode ('utf8',$line));
decode_json returns a reference. I am sure this is an array. How do I find the size of $perl_scalar?? As per Perl documentation, arrays are referenced using @name. Is there a workaround?
This reference consist of an array of hashes. I would like to get the number of hashes.
If I do length($perl_scalar), I get some number which does not match the number of elements in array.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
那就是:
您可以从 perlreftut 获取更多信息。
您可以将引用的数组复制到普通数组,如下所示:
但在此之前,您应该检查
$perl_scalar
是否确实引用了一个数组,使用ref
:length
方法不能用于计算数组的长度。这是为了获取字符串的长度。That would be:
You can get more information from perlreftut.
You can copy your referenced array to a normal one like this:
But before that you should check whether the
$perl_scalar
is really referencing an array, withref
:The
length
method cannot be used to calculate length of arrays. It's for getting the length of the strings.您还可以使用数组的最后一个索引来计算数组中的元素数量。
You can also use the last index of the array to calculate the number of elements in the array.
由于您要分配给标量,因此在标量上下文中将取消引用的数组计算为元素数。
如果您需要强制标量上下文,请执行以下操作 KARASZI 说并使用
标量
函数。Since you're assigning to a scalar, the dereferenced array is evaluated in a scalar context to the number of elements.
If you need to force scalar context then do as KARASZI says and use the
scalar
function.您可以使用 Data::Dumper 查看整个结构:
Data::Dumper 是随 Perl 安装的标准模块。有关所有标准语用和模块的完整列表,请参阅
perldoc perlmodlib
。You can see the entire structure with Data::Dumper:
Data::Dumper is a standard module that is installed with Perl. For a complete list of all the standard pragmatics and modules, see
perldoc perlmodlib
.