URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9305
[ Назад ]

Исходное сообщение
"perl && package"

Отправлено Аноним , 01-Дек-11 12:02 
Есть пакет (pack1.pl):
package pack1;
$test='234234';
return 1;

В основной программе имя пакета получаем в переменной:
my $p='pack1';
require "$p.pl"; #пакет загружаем

а теперь нужно вывести переменную $test находящуюся в пакете, стандартно было бы так:
print $pack1::test;

но тут имя пакета нужно указывать через переменную $p и не соображу как сделать, например это, не работает:
print $${p}::test;
print $($p::test);


Содержание

Сообщения в этом обсуждении
"perl && package"
Отправлено meantraitor , 01-Дек-11 14:28 
>[оверквотинг удален]
> В основной программе имя пакета получаем в переменной:
> my $p='pack1';
> require "$p.pl"; #пакет загружаем
> а теперь нужно вывести переменную $test находящуюся в пакете, стандартно было бы
> так:
> print $pack1::test;
> но тут имя пакета нужно указывать через переменную $p и не соображу
> как сделать, например это, не работает:
> print $${p}::test;
> print $($p::test);

eval "print \$${p}::test";


"perl && package"
Отправлено Аноним , 02-Дек-11 06:26 
>  eval "print \$${p}::test";

логично и мои мозги до это не дошли, но все же несколько костылеподобно, я думал есть более прямое решение...