Нельзя ссылаться на лексические (my
) переменные, используя синтаксис $ {$ foo}. Возможно, вы могли бы заставить это работать, если бы они были переменными пакета, но это не будет правильным способом сделать это.
Правильный способ сделать это - использовать вложенную структуру данных.
Я вижу два очевидных способа сделать это. Вы можете создать массив op_sel, содержащий непосредственно внутренние хэши, или создать хэш хэшей, а затем внести в него индекс.
Итак, "массив хешей":
my @op_sels = (
{
bibuf => '000',
self => '101',
},
{
zero => '1',
temp => '0',
},
);
for my $op (@op_sels) {
print $$op{bibuf};
}
и "хэш хэшей":
my %op_sels = (
1 => {
bibuf => '000',
self => '101',
},
2 => {
zero => '1',
temp => '0',
},
);
for my $op_key (sort keys %op_sels) {
print $op_sels{$op_key}{bibuf};
}