Проблема в том, что вы помещаете массив в конец @campaign_names
, когда вам нужна ссылка на массив. Вот как бы я это написал:
while(@results = $execute->fetchrow())
{
my $active = $results[1] ? 'true' : 'false';
push @campaign_names, [ $results[0], $active ];
}
# later
foreach my $campaign( @campaign_names )
{
my $name = $campaign->[0];
my $active = $campaign->[1];
}
Я немного очистил его, используя троичное условное выражение (?:
), чтобы выяснить значение $active
. [ ... ]
создает анонимную ссылку на массив (скаляр, указывающий на массив), который затем помещается в @campaign_names
.
Когда мы зациклимся на них позже, следует отметить две важные вещи: мы используем my
в переменной цикла, чтобы сохранить его локальным по отношению к блоку цикла, и что мы используем ->
для разыменования элементов в указанном массиве. по ссылке на массив.