散列变量的解引用散列

时间:2013-11-14 09:41:44

标签: perl

如何取消引用这样的变量以获得'99'和'参数中的问题'?

  DB<103> print Dumper($error_code);
  $VAR1 = \{
            '99' => 'Problem in Parameter'
          };


  DB<104> x $error_code
  0  REF(0x30393f34)
   -> HASH(0x30393ea4)
         99 => 'Problem in Parameter'

3 个答案:

答案 0 :(得分:1)

您可以参考参考。你必须加倍取消引用,首先是标量,而不是哈希:

my $error_code = \{
  '99' => 'Problem in Parameter'
};
my ($ninety_nine) = keys %$$error_code;
my $string        = ${$error_code}->{$ninety_nine};
print "$ninety_nine, $string\n";

答案 1 :(得分:1)

您引用了对哈希的引用。所以你需要两个解引用。

$error_code    A reference to a reference to a hash
$$error_code   A reference to a hash
%$$error_code  A hash

所以,

my ($key, $value) = %$$error_code;
say $key;
say $value;

答案 2 :(得分:0)

怎么样:

my ($key, $value) = each %$$error_code;
say $key;
say $value;

<强>输出:

99
Problem in Parameter