Я застреваю при создании модуля perl Moose.Как получить доступ к переменным в импортированном модуле в локальной области в perl?
У меня есть глобальный модуль pm.
package XYZ;
require Exporter;
our @ISA = qw(Exporter); ## EDIT missed this line
our @EXPORT_OK = qw($VAR);
my $VAR1 = 1;
our $VAR = {'XYZ' => $VAR1};
1;
Я хочу, чтобы получить $VAR
в Moose
модуле Я создаю
package THIS;
use Moose;
use YAML::XS;
sub get_all_blocks{
my ($self) = @_;
require $self->get_pkg(); # this returns the full path+name of the above package
# i cannot use use lib+use since the get_pkg starts complaining
our $VAR;
print YAML::XS::Dump($XYZ::VAR); # this works
print YAML::XS::Dump($VAR); # this does not work
# i cannot use the scope resolution since XYZ would keep changing.
}
1;
Может кто-то пожалуйста, помогите мне с доступом к переменной?
EDIT: Пропущенная одна строка в коде package XYZ
. я не могу коснуться package XYZ
, так как он принадлежит/используется кем-то другим, я могу просто использовать его :(
[Не экспортировать переменные!] (Http://perldoc.perl.org/Exporter.html#What-Not-to-Export) – ThisSuitIsBlackNot
«Не экспортировать переменные» прикомандированные, но затем более общие - почему бы вам не использовать XYX qw (...) 'в вашем' THIS'? Вам нужны символы из других пакетов, поэтому импортируйте их. – zdim
Я сделал односимвольное исправление. В пакете у вас был 'XYX', он был изменен на' XYZ'. Похоже на то, что вы намеревались. Если нет, не стесняйтесь возвращать мои изменения. – stevieb