Как мне получить доступ к скаляру, определенному в другом пакете, в Perl?

Кажется, я застрял, пытаясь получить доступ к скаляру, который определен в другом пакете, и сузил пример до простого тестового примера, в котором я могу воспроизвести проблему. То, что я хочу сделать, это получить доступ к ссылке на список, который определен в пакете '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;
5
задан Sinan Ünür 7 December 2010 в 18:18
поделиться