Perl哈希已满,然后为空

时间:2013-11-26 00:28:35

标签: perl hash

在新服务器上移动到Perl 5时出现哈希问题:

我有一个名为%hash的哈希,当我测试它时,它看起来充满了word =>族对(go => go):

   while ( my ($key, $value) = each(%hash)) { print " $key => $value\n";  }

但是,当我尝试获取给定键的值时

    if ( $hash{$word} ) {...

〜即使我不知道它的输出也是零!一定有一些明显错误的东西,但我看着我的眼睛

3 个答案:

答案 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};是。