【发布时间】:2014-05-27 17:42:39
【问题描述】:
关于在 Perl 中推送到多维散列的快速问题。我有以下变量:
%pids #name of hash
$pid = 24633 #key of the has
$time 00:0 #time reference
$line #has a line full of data
我正在从 $line 输入 $pid 和 $time。如果键 24633 与参考元素 05:3 一起存在,则将行添加到 05:3 并使用 05:3 作为键。
pids{24633}{05:3}
我试过了:
if ($pids{$pid}{$time}){
@{$pids{$pid}{$time}} -> $line;
}
我也试过这个:
if ($pids{$pid}{$time}){
push @{$pids{$pid}{$time}}, $line;
但是当它尝试推送时,它一直给我一个“不是 HASH 参考”。有什么建议?谢谢!
这就是我构建哈希的方式:
foreach my $key (keys %pids){
if ($key =~ $mPID){
push @messages, $line;
}
}
这是哈希结构:
$VAR1 = {
'17934' => [
'14:3'
],
'17955' => [
'13:3'
],
'24633' => [
'05:3'
],
'6771' => [
'04:1'
],
'7601' => [
'06:0'
],
};
【问题讨论】:
-
您有一个数组哈希,但您尝试将它用作哈希的哈希。您的代码也与问题无关,因为它没有显示您如何构建哈希。
-
我已经包含了我是如何构建它的,谢谢
-
不,你没有。您已经介绍了如何使用散列来尝试构建一个数组,这将使用当前代码用未定义的值填充数组。 (因为你使用
$key,但存储$line。)