Perl hashref打印键

AAB*_*AAB 1 perl perl-data-structures

我有以下hashref: -

my $hashref = {'a'=>(1,2,3,4),
               'b'=>(5,6,7,8)};
Run Code Online (Sandbox Code Playgroud)

然后我使用以下内容来打印键(即'a'和'b'): -

foreach (keys %$hashref){
   print "\n".$_."\n";
}
Run Code Online (Sandbox Code Playgroud)

这将打印以下输出: -

4

a

7

2

5
Run Code Online (Sandbox Code Playgroud)

尝试使用Data :: Dumper打印数据结构hashref,得到以下输出: -

$VAR1 = {
          '4' => 'b',
          'a' => 1,
          '7' => 8,
          '2' => 3,
          '5' => 6
       };
Run Code Online (Sandbox Code Playgroud)

我的问题是: -

1)如何只打印正确的键,即'a'和'b'.2)为什么数据结构看起来像上面的输出而不是: -

$VAR1 = {
           'a' => (1,2,3,4),
           'b' => (5,6,7,8)
        };
Run Code Online (Sandbox Code Playgroud)

Dan*_*Dan 7

您正在定义哈希错误.它解释了这个:

'a'=>(1,2,3,4),
'b'=>(5,6,7,8)
Run Code Online (Sandbox Code Playgroud)

简单地说是10个元素的列表.(请记住,哈希也可以使用简单列表声明,=>运算符是可选的.)而是使用方括号将值设置为arrayref文字:

'a'=>[1,2,3,4],
'b'=>[5,6,7,8]
Run Code Online (Sandbox Code Playgroud)

Data :: Dumper应该调用哪个:

$VAR1 = {
   'a' => [1,2,3,4],
   'b' => [5,6,7,8]
};
Run Code Online (Sandbox Code Playgroud)

  • 这就是我的观点,你/正在/获得钥匙.这些是关键.哈希声明获取10个元素的列表,它将其解释为5个键和5个值. (4认同)
  • @AAB你不能得到'a'和'b',因为哈希没有被正确定义.正确的解决方案是正确定义哈希.没有其他解决方案. (2认同)