1

如何取消引用这样的变量以获得 '99' 和 'Problem in Parameter' ?

  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'
4

3 回答 3

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";
于 2013-11-14T09:48:34.040 回答
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;
于 2013-11-14T14:09:18.287 回答
0

怎么样:

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

输出:

99
Problem in Parameter
于 2013-11-14T09:47:10.067 回答