Значения хэшей должны быть скалярами. Если вы хотите хранить несколько значений в хеш-значениях, вам нужно найти способ размещения нескольких значений в скаляре. Способ, который будет хорошо работать здесь, включает сохранение ссылки на массив в хеш-значении:
$self->{log} = []; # Optional because of autovivification.
Затем поместите несколько значений в ссылочный массив:
push @{ $self->{log} }, $log_info;
Можно перебрать значения следующим образом:
for my $entry (@{ $self->{log} }) {
Если вы хотите использовать индекс для $i % 2
, вы можете использовать:
my $log = $self->{log};
for my $i (0..$#$log) {
my $entry = $log->[$i];
...
}
Примечание: начиная с 5.14.0,
push $self->{log}, ...;
в основном эквивалентно
push @{ $self->{log} }, ...;
Perl 5.14 довольно новый, так что вы можете держаться подальше от этого, если только вы не программируете для себя.