我有一个哈希数组,如下所示.
@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)
删除非常适合散列键,但在您的情况下,您要删除数组元素,以便grep可以应用过滤:
@students = grep { $_->{che} != 35 } @students;
Run Code Online (Sandbox Code Playgroud)