perl - 如何在perl中获得列表的哈希值

标签 perl perl-data-structures

很抱歉出现这个语法问题。我找不到解决方案。 我想在 perl 中有一个散列数组,每个散列都有字符串和数组。 我正在尝试编写以下代码:

use strict;
my @arr = (
       { name => "aaa" , values => ("a1","a2") },
       { name => "bbb" , values => ("b1","b2","b3") }
      );


foreach $a (@arr) {
  my @cur_values = @{$a->{values}};
  print("values of $a->{name} = @cur_values\n");
};

但这对我不起作用。我收到编译错误和警告(使用 perl -w)

a.pl 第 2 行的匿名哈希中的元素数量为奇数。 当 a.pl 第 9 行使用“严格引用”时,无法使用字符串(“a1”)作为 ARRAY 引用。

最佳答案

I want to have an array of hashs in perl

你不能。 Perl 中的数组仅包含标量。不过,{} 将创建一个哈希引用,它是一个标量,没有问题。

但是这个:

{ name => "aaa" , values => ("a1","a2") }

含义相同:

{ name => "aaa" , values => "a1", "a2" },

您需要一个 arrayref(这是一个标量),而不是值的列表。

{ name => "aaa" , values => ["a1","a2"] }

关于perl - 如何在perl中获得列表的哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7515759/

相关文章:

xml - 我如何轻松测试 XML 文件在 Perl 中的格式是否正确?

windows - 使用 Strawberry Perl 安装模块

perl - 这个变量在perl中的数据结构是什么?

perl - 我如何遍历哈希?

perl - 为什么我不能以类似哈希的格式打印哈希表?

arrays - 如何将新哈希附加到哈希数组?

perl - 使用 Perl 将数字十六进制格式的 UCS2(未知 LE 或 BE)转换为 UTF-8

perl - Perl 中的 my ($variableName) 和 my $variableName 有什么区别?

perl - 当我使用 Perl 5.10 编译 XS 时,为什么会出现 "undefined reference"错误?

perl - XML::Simple 是否可以消除标签描述?