如果哈希元素的值"undef",则删除该元素



我见过删除哈希元素delete。但是,如果某些元素日期具有undef值怎么办?

我想删除所有值为 undef 的哈希元素。

我将如何以一行或最简单的方式做到这一点。

我建议你删除一个哈希片,使用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 }
foreach (keys %hash) {
    delete $hash->{$_} unless defined $hash->{$_};
}

最新更新