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

ImD*_*til 4 arrays perl hash

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

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

我想基于某些条件删除整个哈希,因为我尝试使用下面的代码,但是收到错误说法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]});
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Сух*_*й27 9

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

@students = grep { $_->{che} != 35 } @students;
Run Code Online (Sandbox Code Playgroud)