我有一个哈希,它具有以下内容,通过Data::Dumper
转储:
$VAR1 = [
0
];
这是什么意思?我似乎无法理解,如果“0”是没有分配给它或任何其他东西的键。唯一的线索是我在下面得到了这个错误,它表示哈希不能被零字符串引用,是吗?
在FOO.pm使用“严格参考”时,不能使用字符串(“0”)作为HASH参考
这被分配给散列的方式是模糊的,因为代码是限制的,但在其他一些情况下,这个相同的散列有类似的东西
$VAR1 = [
{
'ExtraInfo->m_Fade_Notification_Timer' => 'RTPC',
'ExtraInfo->m_FarEndNESlot' => '28 MHz',
'ExtraInfo->m_Temperature_Ra2' => '',
'ExtraInfo->m_Path' => '',
'ExtraInfo->m_Radio_Terminal_Name' => 'ST01',
}
];
答案 0 :(得分:2)
没有涉及哈希。 $VAR1 = [ 0 ];
表示转储变量是对数组的引用,其中单个元素由数字零组成。
答案 1 :(得分:1)
您可以使用ref()
命令检查它的引用类型。如果它返回' HASH'对于该变量,您可以安全地将其用作您期望的哈希引用。如果没有,那么您的输入数据不是您所期望的,您可以提出异常或处理它。
if (ref($data) eq 'HASH') {
while (my ($key, $value) = each %{$data}) {
...
}
} else {
die "Unexpected data";
}
或者你可以在比较中使用ref()
两次,给它你想要的结构。这避免了编码特定的字符串值:
if (ref($data) eq ref({})) {
...