有关在Perl中推送到多维散列的快速问题。我有以下变量:在Perl中使用多维哈希?
%pids #name of hash
$pid = 24633 #key of the has
$time 00:0 #time reference
$line #has a line full of data
我从$行输入$ pid和$ time。如果键24633与参考元素05:3一起存在,则将该行添加到05:3并使用05:3作为键。
的PID {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'
],
};
你有一个数组哈希表,但您尝试使用它作为哈希散列。你的代码也与这个问题无关,因为它没有显示你如何构建你的散列。 – TLP
我已经包括了如何建立它,谢谢 – cycloxr
不,你没有。您已经包括了如何使用散列来尝试构建一个数组,而当前代码将使用未定义的值填充数组。 (因为你使用'$ key',但是存储'$ line'。) – TLP