Perl,如何删除哈希数组中的哈希?

时间:2013-12-29 12:14:56

标签: arrays perl hash

我有一个哈希数组,如下所示。

@students= (
    {
        'math' => 95,
        'phy'  => 90,
        'che'  => 85
    },
    {
        'math' => 50,
        'phy'  => 70,
        'che'  => 35
    }
);

我想根据某些条件删除整个哈希,因为我尝试使用下面的代码,但收到错误delete argument is not a HASH or ARRAY element or slice。所以请帮助我,我该怎么办?

for $i ( 0 .. $#students) {
    for $key ( keys %{ $students[$i] } ) {
        if ($key eq 'che') {
            if ($students->{$key} == 35){
                delete (%{$students[$i]});
            }
        }
    }
}

1 个答案:

答案 0 :(得分:9)

删除非常适合哈希键,但在您的情况下,您希望删除数组元素,以便可以应用grep过滤:

@students = grep { $_->{che} != 35 } @students;