Perl хэш хэшей
У меня есть файл со списком строк, таких как
на 12345 вводят значение 1 в "сигнал_А"
при 12345 введенное значение 0 до "signal_B"
на 12346 вводят значение 1 в "сигнал_А"
на 12348 вводят значение 1 в "сигнал_А"
при 12350 вводят значение 0 в "сигнал_А"
на 12354 вводят значение 0 в "сигнал_А"
Из этого файла я хочу прочитать до конца файла, и я хочу построить хэш хэшей что-то вроде
%tab = (
12345 => {
signal => "signal_A",
value => "1",
},
12345 => {
signal => "signal_B",
value => "1",
},
);
Также я хочу повторить эту хэш-таблицу.
Буду очень признателен за вашу помощь.
1 ответ
У вас есть два элемента с одинаковым ключом. Эта структура данных не может существовать. Как насчет следующего:
%tab = (
12345 => [
{
signal => "signal_A",
value => "1",
},
{
signal => "signal_B",
value => "1",
},
],
12346 => [
{
signal => "signal_A",
value => "1",
},
],
...
);
Вы использовали бы следующее, чтобы создать его
push @{ $tab{$id} }, { signal => $signal, value => $value };
Вы можете перебрать структуру, используя
for my $id (keys %tab) {
for $event (@{ $tab{$id} }) {
...$event->{signal}...;
...$event->{value}...;
}
}