perl - 如何使用散列中的键作为另一个键的值

标签 perl

我有一个散列,我有两个键,我想使用一个键作为另一个键的值。在 Perl 中可能吗?

表达式:

%hash= (
        abs =>[a,b,c,e];
        xyz=> abs
      );

我试过了,但没能做到。

最佳答案

您可以使用您希望的任何值作为散列值,包括另一个键的名称。但是,您不能不引用该值,因为它不会像键一样自动引用:

my %hash = (
    abs => 'foo',
    xyz => 'abs'
);

=> 之前引用参数是可选的,如果它不包含空格。引用它后面的参数不是。

你可能也想知道

[a,b,c,d]

如果您打开了警告(您始终应该打开),将会产生警告。

Unquoted string "a" may clash with future reserved word at
Unquoted string "b" may clash with future reserved word at

这仍然“有效”的原因是——据我所知——为了向后兼容,你应该总是引用你的字符串。此外,举个例子,您的裸词 abs 实际上被误认为是内置函数 abs ,在这种情况下将尝试找到 $_ 的绝对值,并且可能会失败,返回 0(并发出有关 $_ 中未定义值的警告)。

你的数组引用应该是这样的:

['a', 'b', 'c', 'd']

或者使用更简单的语法,使用 qw() 运算符:

[ qw(a b c d) ]

您可能还会注意到,分号 ; 不是散列赋值中的有效字符。括号内的键/值对应该用逗号分隔,没有别的。

关于perl - 如何使用散列中的键作为另一个键的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16795591/

相关文章:

perl - 如何禁止在 Selenium RC 窗口中显示密码

从命令行问题执行 Perl

json - 在 Perl 中使用 JSON::XS::encode_json 将 64 位整数更改为 float

perl - 如何在 Perl 中创建唯一标识符?

perl - 如何加快 Perl 处理固定宽度数据的速度?

Perl:使用模块@list

perl - 将数组放在 => 运算符的右侧会发生什么?

perl - Catalyst::Plugin::StatusMessage 跨多个 'app' 服务器

perl - 如何使用 WWW::Mechanize 提交 HTML 中没有的表单?

python - 以编程方式从 Excel 电子表格中提取数据