我见过删除哈希元素的delete
。但是,如果某些元素的日期值为undef
,该怎么办?
我想删除值为undef
的所有哈希元素。
我如何用一行或最简单的方式做到这一点。
答案 0 :(得分:5)
我建议您删除哈希切片,使用grep
确定哪些键对应于未定义的值
use strict;
use warnings 'all';
my %h = (
a => 1,
b => undef,
c => 1,
d => undef,
);
delete @h{ grep { not defined $h{$_} } keys %h };
use Data::Dump;
dd \%h;
{ a => 1, c => 1 }
答案 1 :(得分:2)
foreach (keys %hash) {
delete $hash{$_} unless defined $hash{$_};
}