在新服务器上移动到Perl 5时出现哈希问题:
我有一个名为%hash的哈希,当我测试它时,它看起来充满了word =>族对(go => go):
while ( my ($key, $value) = each(%hash)) { print " $key => $value\n"; }
但是,当我尝试获取给定键的值时
if ( $hash{$word} ) {...
〜即使我不知道它的输出也是零!一定有一些明显错误的东西,但我看着我的眼睛
答案 0 :(得分:3)
由于您没有详细说明代码,我只能推断您的问题:
1.你的哈希实际上没有关键的$ word。请检查它。
2. key $ work的值只是一个空字符串“”或数字0或“\ 0”,所有这些条件都将导致你的if($ hash {$ word})返回false,即使你的哈希为这个键有值。所以,再检查一下。
答案 1 :(得分:0)
要查看$word
是否格式错误,请尝试执行以下操作:
使用Data :: Dumper;
sub test
{
my ($hashref, $key) = @_ ;
print "Before: " . Dumper( $hashref ) ;
if ( $key ~~ $hashref ) { print "found $key : $hashref->{$key}\n" ; }
else
{
$hashref->{$key} = "NOT FOUND" ;
print "After: " . Dumper( $hashref ) ;
}
}
然后看看两个哈希中有什么不同。
答案 2 :(得分:-2)
但是,当我尝试获取给定键(
if ( $hash{$word} ) {...
)的值时,输出为nil
if ( $hash{$word} )
不是您打印哈希元素值的方式。 print $hash{$word};
是。