Я знаю, что можно использовать переменную в качестве имени переменной для переменных пакета в Perl. Я хотел бы использовать содержимое переменной в качестве имени модуля. Например:
package Foo;
our @names =("blah1", "blah2");
1;
И в другом файле я хочу иметь возможность установить содержимое скаляра на «foo», а затем получить доступ к массиву имен в Foo
через этот скаляр.
my $packageName = "Foo";
По сути, я хочу сделать что-то вроде:
@{$packageName}::names; #This obviously doesn't work.
Я знаю, что могу использовать
my $names = eval '$'. $packageName . "::names"
Но только если Foo::names
- скаляр. Есть ли другой способ сделать это без оператора eval
?