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

发布于 2024-11-05 05:28:25 字数 280 浏览 0 评论 0原文

这是我面临的情况...

$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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

一影成城 2024-11-12 05:28:25

那就是:

scalar(@{$perl_scalar});

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

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

my @array = @{$perl_scalar};

但在此之前,您应该检查 $perl_scalar 是否确实引用了一个数组,使用 ref

if (ref($perl_scalar) eq "ARRAY") {
  my @array = @{$perl_scalar};
  # ...
}

length方法不能用于计算数组的长度。这是为了获取字符串的长度。

That would be:

scalar(@{$perl_scalar});

You can get more information from perlreftut.

You can copy your referenced array to a normal one like this:

my @array = @{$perl_scalar};

But before that you should check whether the $perl_scalar is really referencing an array, with ref:

if (ref($perl_scalar) eq "ARRAY") {
  my @array = @{$perl_scalar};
  # ...
}

The length method cannot be used to calculate length of arrays. It's for getting the length of the strings.

染墨丶若流云 2024-11-12 05:28:25

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

my $length = $#{$perl_scalar} + 1;

You can also use the last index of the array to calculate the number of elements in the array.

my $length = $#{$perl_scalar} + 1;
扭转时空 2024-11-12 05:28:25
$num_of_hashes = @{$perl_scalar};

由于您要分配给标量,因此在标量上下文中将取消引用的数组计算为元素数。

如果您需要强制标量上下文,请执行以下操作 KARASZI 说并使用标量函数。

$num_of_hashes = @{$perl_scalar};

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.

没有心的人 2024-11-12 05:28:25

您可以使用 Data::Dumper 查看整个结构:

use Data::Dumper;
print Dumper $perl_scalar;

Data::Dumper 是随 Perl 安装的标准模块。有关所有标准语用和模块的完整列表,请参阅 perldoc perlmodlib

You can see the entire structure with Data::Dumper:

use Data::Dumper;
print Dumper $perl_scalar;

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文