我有一个哈希数组,如下所示。
@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]});
}
}
}
}
答案 0 :(得分:9)
删除非常适合哈希键,但在您的情况下,您希望删除数组元素,以便可以应用grep
过滤:
@students = grep { $_->{che} != 35 } @students;