代码之家  ›  专栏  ›  技术社区  ›  joe

如何在arrayref的散列中找到元素数?

  •  1
  • joe  · 技术社区  · 16 年前
    $HoA{teletubbies} = [ "tinky winky", "dipsy", "laa-laa", "po" ];
    

    我如何才能找到这个arrayref散列中的元素数?它应该返回4。

    3 回复  |  直到 16 年前
        1
  •  12
  •   P Shved    16 年前

    从技术上讲,这不是数组的散列。这是数组引用的散列值。所以你应该取消引用它 @{...} 运算符和(可选)强制标量上下文将数组转换为其长度。

    scalar @{$HoA{teletubbies}}
    
        2
  •  6
  •   Telemachus MrJames    16 年前

    通过在标量上下文中对数组进行计算,可以获得Perl中数组的大小。

    例如,您可以这样做:

    my $size = scalar @{$HoA{teletubbies}};
    

    但是您也可以在这个实例中隐式地执行它:

    my $size = @{$HoA{teletubbies}};
    

    作为Perl,您也可以这样做:

    my $size = $#{$HoA{teletubbies}} + 1;
    

    (The # operator返回数组的最后一个索引,因此向其中添加一个将给出其大小)。

        3
  •  0
  •   woolstar    16 年前

    如果你想做整个哈希,只需再加一点:

    my $size= 0 ;
    foreach ( values %HoA ) { $size += @$_ }