在Perl中,你可以在什么情况下做这样的事情:
delete $ALIGN{$rna}{$dnaB};
print qq[deleted $dnaB\n] if ! exists $ALIGN{$rna}{$dnaB};
然后没有print语句执行?这让我头疼不已。谢谢!
答案 0 :(得分:4)
您发布的内容将删除密钥。
$ perl -e'
$ALIGN{$rna}{$dnaB} = "abc";
delete $ALIGN{$rna}{$dnaB};
print exists($ALIGN{$rna}{$dnaB}) ? qq[exists\n] : qq[doesn'\''t exist\n] ;
'
doesn't exist
唯一的情况是,如果%{ $ALIGN{$rna} }
是一个行为不端的魔法变量(例如一个行为不端的绑定变量),那就不会这样了,但我强烈怀疑是这样的。
实际可能发生的是您在delete
和exists
之间重新创建了变量。
$ perl -e'
sub foo { }
$ALIGN{$rna}{$dnaB} = "abc";
delete $ALIGN{$rna}{$dnaB};
foo($ALIGN{$rna}{$dnaB}{foo});
print exists($ALIGN{$rna}{$dnaB}) ? qq[exists\n] : qq[doesn'\''t exist\n] ;
'
exists