Я пытаюсь создать (автоматически) массив каждый раз, когда создаю перечисление. Для этого я посылаю нужный массив перечислений через sub (myenum), который сначала создает массив, а затем вызывает enum (через использование).итерация над перечислениями в perl
В приведенном ниже примере у меня есть две перечисления, одна прямая, одна с указанным выше методом. Мой метод не работает :-(Что я делаю неправильно?
@enumArray=();
sub myenum($)
{
my @a = split (/\s+/,$_[0]);
my $prefix = $a[0];
$prefix =~ s/^://;
my $len = scalar @a;
$len--;
my $i=0;
for ($i=1;$i<=$len;$i++) {
push (@enumArray, "$prefix.$a[$i]");
}
use enum (@enumArray);
}
myenum(":THIS a=100 b c");
use enum qw(:THAT a=999 b c);
print THISa . " " . THISb . " " . THISc . "\n";
print THATa . " " . THATb . " " . THATc . "\n";
'enum' не следует вызывать в цикле for. Какой результат вы ожидаете? Прочтите https://metacpan.org/pod/enum – toolic
'use' происходит во время компиляции, а не во время выполнения. Кроме того, с философской точки зрения, разве вы не считаете, что динамически заданная величина констант кажется странной? –
К сожалению! Ты прав. «Использовать перечисление» не должно быть в цикле for. Исправлены сообщения. Почему я делаю это, я хотел бы сделать обратный поиск и получить фактическую строку (а не число), если я хочу напечатать тип перечисления (например, функцию перечисления в строку). –