如何在Perl中取消定义散列键的值?

Ale*_*ndr 4 perl hash

我想知道如何在Perl中取消定义散列键的值.有人可以请更正我的代码吗?

#!/usr/bin/perl

use strict; 
use warnings;
my %hash;


undef($hash{"a"});
undef($hash{"b"});
print scalar values %hash; # i need here 0
print scalar keys %hash; # and here 2
Run Code Online (Sandbox Code Playgroud)

Ale*_*nii 8

undef($hash{"a"});
Run Code Online (Sandbox Code Playgroud)

相当于

$hash{"a"}=undef;
Run Code Online (Sandbox Code Playgroud)

所以你添加值为'a'的键'a'.要从哈希中删除值,请使用"删除".

delete $hash{"a"};
Run Code Online (Sandbox Code Playgroud)

对于相同的散列,不可能具有不同大小的"键"和"值".您可以使用grep过滤不需要的元素.