perl 中的奇数哈希表示
Odd hash representation in perl
我有一个包含以下内容的散列,通过 Data::Dumper
转储:
$VAR1 = [
0
];
这是什么意思?我似乎无法理解“0”是否是一个没有分配给它或任何其他东西的键。唯一的线索是我在下面收到这个错误,它说散列不能被零字符串引用,对吗?
Can't use string ("0") as a HASH ref while "strict refs" in use at FOO.pm
将其分配给散列的方式是模糊的,因为代码是受限制的,但在其他一些情况下,这个相同的散列有类似
的东西
$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',
}
];
不涉及哈希。 $VAR1 = [ 0 ];
表示转储变量是对数组的引用,该数组的单个元素由数字零组成。
您可以使用 ref()
命令检查它是什么类型的引用。如果它 returns 'HASH' 用于该变量,那么您可以安全地将它用作您期望的哈希引用。如果不是,那么您的传入数据不是您所期望的,您可以引发异常或以其他方式处理它。
if (ref($data) eq 'HASH') {
while (my ($key, $value) = each %{$data}) {
...
}
} else {
die "Unexpected data";
}
或者你可以在比较中使用两次 ref()
,给它你想要的结构。这避免了对特定字符串值进行编码:
if (ref($data) eq ref({})) {
...
我有一个包含以下内容的散列,通过 Data::Dumper
转储:
$VAR1 = [
0
];
这是什么意思?我似乎无法理解“0”是否是一个没有分配给它或任何其他东西的键。唯一的线索是我在下面收到这个错误,它说散列不能被零字符串引用,对吗?
Can't use string ("0") as a HASH ref while "strict refs" in use at FOO.pm
将其分配给散列的方式是模糊的,因为代码是受限制的,但在其他一些情况下,这个相同的散列有类似
的东西$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',
}
];
不涉及哈希。 $VAR1 = [ 0 ];
表示转储变量是对数组的引用,该数组的单个元素由数字零组成。
您可以使用 ref()
命令检查它是什么类型的引用。如果它 returns 'HASH' 用于该变量,那么您可以安全地将它用作您期望的哈希引用。如果不是,那么您的传入数据不是您所期望的,您可以引发异常或以其他方式处理它。
if (ref($data) eq 'HASH') {
while (my ($key, $value) = each %{$data}) {
...
}
} else {
die "Unexpected data";
}
或者你可以在比较中使用两次 ref()
,给它你想要的结构。这避免了对特定字符串值进行编码:
if (ref($data) eq ref({})) {
...