1
我有以下代码:的Perl:测试哈希片不会产生预期的结果
if (defined(@hash{qw{value1 value2 value3}})){
# code block
}
我希望发生的是代码块来执行,如果任一$ {散列值1} $ {哈希value2}或$ hash {value3}被定义。但是,什么情况是,代码块执行,当且仅当$哈希{值3}定义:
$hash{value3}='yep, here!';
if (defined(@hash{qw{value1 value2 value3}})){
print "yay!";
}
输出:
yay!
但是:
$hash{value2}='yep, here!';
if (defined(@hash{qw{value1 value2 value3}})){
print "yay!";
}
输出:
<nothing>
为什么不能正常工作对,我该怎么办?
美丽!谢谢。归档于“为什么我没有想到这个?!” – Bintz 2015-03-02 23:59:47
“为什么这不起作用?”的答案是_ [[标量上下文中的切片返回切片的最后一项]](http://perldoc.perl.org/perldata.html#Slices)_(例如[list literals](http://perldoc.perl.org) /perldata.html#List-value-constructors))。 – pilcrow 2015-03-03 00:14:32
@pilcrow tnx发表评论。 – 2015-03-03 00:22:22