我有一个散列,我有两个键,我想使用一个键作为另一个键的值。在 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/