perl中的奇数哈希表示

时间:2015-09-11 19:53:59

标签: perl hash assign ref strict

我有一个哈希,它具有以下内容,通过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',

          }
        ];

2 个答案:

答案 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({})) {
    ...