【问题标题】:How do I determine the number of elements in an array reference?如何确定数组引用中的元素数量?
【发布时间】:2011-08-18 15:39:17
【问题描述】:

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

$perl_scalar = decode_json( encode ('utf8',$line));

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

此引用由哈希数组组成。我想得到哈希的数量。

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

【问题讨论】:

标签: perl json


【解决方案1】:

那就是:

scalar(@{$perl_scalar});

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

您可以像这样将引用的数组复制到普通数组:

my @array = @{$perl_scalar};

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

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

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

【讨论】:

    【解决方案2】:
    $num_of_hashes = @{$perl_scalar};
    

    由于您分配给标量,因此取消引用的数组在标量上下文中被评估为元素的数量。

    如果您需要强制标量上下文,请执行 KARASZI says 并使用 scalar 函数。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        你可以用 Data::Dumper 看到整个结构:

        use Data::Dumper;
        print Dumper $perl_scalar;
        

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-06-21
          • 1970-01-01
          • 1970-01-01
          • 2021-12-21
          • 2014-04-20
          • 1970-01-01
          • 2019-06-23
          • 2019-11-02
          相关资源
          最近更新 更多