【发布时间】:2014-06-04 07:38:46
【问题描述】:
我正在处理 Perl 中的哈希值,但遇到了一些问题。在我的代码运行一段时间后,它会生成一个类似于以下内容的哈希值:
my %book = (
+1 => {
27 => 100,
24 => 1000,
},
-1 => {
30 => 200,
31 => 500,
}
);
在处理更多数据后,代码最终通过使用以下代码行删除了哈希的两个条目:
delete $book{-1}{30};
delete $book{-1}{31};
因此,哈希应该是半空的。但是,稍后在我的代码中运行以下 if 语句:
if ((defined $book{+1}) && (defined $book{-1})){
do A
}else{
do B
}
我的代码最终会执行“事情 A”而不是“事情 B”,因为哈希的“-1”侧已被删除,所以他应该这样做。这怎么可能?而且,最重要的是,如何解决这个问题?
【问题讨论】:
-
惊讶的答案不只是建议改变你的 if 来测试
&& %{ $book{-1} }