在Perl中将哈希数组转换为标量值数组

时间:2018-07-05 13:06:37

标签: perl

我引用了像这样的哈希数组

[
    {
        'parameters'              => '',
        'default_init_for_config' => '1',
        'name'                    => 'CWG.BasicCmode.sim',
        'init'                    => 'config/CWG.BasicCmode.sim'
    },
    {
        'parameters'              => '',
        'default_init_for_config' => '0',
        'name'                    => 'CWG.BasicCmode.MFA.sim',
        'init'                    => 'config/CWG.BasicCmode.MFA.sim'
    },
    {
        'parameters'              => '',
        'default_init_for_config' => '0',
        'name'                    => 'NoInit',
        'init'                    => 'config/NoInit'
    },
    {
        'parameters'              => '',
        'default_init_for_config' => '0',
        'name'                    => '2Vsim.mcc',
        'init'                    => 'config/2Vsim.mcc'
    },
]

我想单独提取键name的值并将其分配给同一数组。

我删除了所有其他键,并得到了这样的内容:

[
    {
        'name' => 'CWG.BasicCmode.sim'
    },
    {
        'name' => 'CWG.BasicCmode.MFA.sim'
    },
    {
        'name' => 'NoInit'
    },
    {
        'name' => '2Vsim.mcc'
    },
    {
        'name' => 'FakeAFF_HA.sim'
    },
    {
        'name' => 'ISCSI.sim'
    },
    {
        'name' => 'CWG.ExtendedCmode.sim'
    },
    {
        'name' => 'CWG.BasicCmodeNonHA.sim'
    },
    {
        'name' => '2Vsim.FakeAFF.mcc'
    },
]

现在如何进行?

输出应为

[
    'CWG.Basicmode.sim',
    'CWG.BasicCmode.MFA.sim',
    'NoInit',
    ...
]

1 个答案:

答案 0 :(得分:4)

要将哈希数组转换为要根据给定键的哈希值构造的标量值的普通数组,可以使用map。例如,假设每个哈希都有一个name键,我们可以将所有这些键的值放在新的arrayref中,如下所示:

my $new_array_ref = [map { $_->{name} } @$array_ref];