Кажется, я застрял, пытаясь получить доступ к скаляру, который определен в другом пакете, и сузил пример до простого тестового примера, в котором я могу воспроизвести проблему. То, что я хочу сделать, это получить доступ к ссылке на список, который определен в пакете 'Example', используя наш механизм, однако Dumper показывает, что переменная всегда не определена в example.pl:
Example.pm выглядит следующим образом:
#!/usr/bin/perl -w
use strict;
use warnings;
use diagnostics;
package Example;
use Data::Dumper;
my $exported_array = [ 'one', 'two', 'three' ];
print Dumper $exported_array;
1;
И код, который использует этот пакет, выглядит так:
#!/usr/bin/perl -w
use strict;
use warnings;
use diagnostics;
use Data::Dumper;
use lib '.';
use Example;
{ package Example;
use Data::Dumper;
our $exported_array;
print Dumper $exported_array;
}
exit 0;
После запуска этого кода запускается первый Dumper, и все выглядит нормально, после этого запускается второй Dumper, example.pl и ссылка тогда не определена:
$VAR1 = [
'one',
'two',
'three'
];
$VAR1 = undef;