我正在寻找一种更好的方法来首先“测试”哈希键在使用之前是否存在。我目前正在编写一个事件日志解析器,它将十六进制数字解码为字符串。由于我无法确定我的解码表是否包含十六进制数字,我首先需要检查密钥是否存在于哈希中,然后再将值分配给新变量。所以我经常做的是:
if ($MEL[$i]{type} eq '5024') {
$MEL[$i]{decoded_inline} = $decode_hash{checkpoint}{"$MEL[$i]{raw}[128]"}
if exists ($decode_hash{checkpoint}{"$MEL[$i]{raw}[128]"})
}
我不喜欢的是该表达式$decode_hash{checkpoint}{"$MEL[$i]{raw}[128]"}
在我的代码中出现了两次。上面的行有更好或更短的版本吗?