从perl中的一部分哈希创建一个数组

时间:2014-09-15 07:34:00

标签: perl

我有一个包含子哈希的哈希,我想分别抽象该子哈希并从中创建一个数组,

哈希看起来像

'a1' => '1',

'a2' => '2'.

'Def' => [
            'd' => 'x',
            'e' => 'y'
         ]

我需要为'Def'制作一个单独的哈希。并仅打印'Def'作为数组

2 个答案:

答案 0 :(得分:0)

下面你会找到答案。

print "@{$a{'Def'}}";

答案 1 :(得分:0)

很难从阅读你的问题到确切地知道你想要实现的目标,但我对它的解释是你想要提取分配给def的匿名哈希并将其存储在另一个哈希中。然后,您希望将此哈希打印为数组。我还提供了一些示例来打印哈希值的键。

use strict;
use Data::Dumper;

my %first_hash = (
    a1 => '1',
    a2 => '2',
    def => {
        d => 'x',
        e => 'y'
    }
);

my %second_hash = %{$first_hash{'def'}};
my @full_array = %second_hash;
my @keys_array = keys %second_hash;
my @values_array = values %second_hash;

print Dumper (\%first_hash);
print Dumper (\%second_hash);
print "full array: ", join(' ',@full_array), "\n";
print "keys array: ", join(' ',@keys_array), "\n";
print "values array: ", join(' ',@values_array), "\n";

<强>输出

$VAR1 = {
          'a2' => '2',
          'def' => {
                     'e' => 'y',
                     'd' => 'x'
                   },
          'a1' => '1'
        };
$VAR1 = {
          'e' => 'y',
          'd' => 'x'
        };
full array: e y d x
keys array: e d
values array: y x