我的哈希看起来像这样
%hIDSet = (
'TSASD2' => {
'country' => 'US',
'newid' => 'IMRAN',
'oldid' => 'TSASD4'
}
'TS767' => {
'country' => 'DE',
'newid' => 'B90LKT',
'oldid' => '432553'
},
);
当我这样做的时候
my $sID = "TSASD2";
delete $hIDSet{$sID};
我得到的输出是
%hIDSet = (
'TSASD2' => {},
'TS767' => {
'country' => 'DE',
'newid' => 'B90LKT',
'oldid' => '432553'
},
);
我的问题是为什么ID没有完全删除?
最佳答案
您确实删除了 key ,因此您必须在再次转储哈希之前重新创建它,如以下代码段所示:
my $sID = "TSASD2";
my %hIDSet = ( $sID => {} );
delete $hIDSet{$sID};
print(Dumper(\%hIDSet)); # It's gone
if ($hIDSet{$sID}{foo}) { '...' }
print(Dumper(\%hIDSet)); # You've recreated it.
请记住
$hIDSet{$sID}{foo}
是
的缩写$hIDSet{$sID}->{foo}
还有那个
EXPR->{foo}
表示
( EXPR //= {} )->{foo}
所以
$hIDSet{$sID}{foo}
表示
( $hIDSet{$sID} //= {} )->{foo}
请注意,这可以分配给 $hIDSet{$sID}
。
关于perl - 在 Perl 中从 2D 哈希中删除键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16224665/