Привет,
возникла необходимость хранить данные в переменной внутри модуля довольно
необычным способом. Примерно так, как это делается в DBIx::Class когда
описывается модель.
Вот пример:
use strict;
use warnings;
use feature 'say';
package BasePackage;
my @STORAGE = ('key9');
sub add {
my ($class, $key) = @_;
say "add $class <- $key";
push @class::STORAGE, $key;
}
sub list {
my $class = shift;
my @data = @class::STORAGE;
print "$class: ";
local $, = ',';
say @data;
}
package FirstPackage;
our @ISA = ('BasePackage');
__PACKAGE__->add('key0');
__PACKAGE__->add('key1');
package SecondPackage;
our @ISA = ('BasePackage');
__PACKAGE__->add('key2');
__PACKAGE__->add('key3');
package main;
FirstPackage->list;
SecondPackage->list;
1;
И вот вывод:
$ perl package.pl
add FirstPackage <- key0
add FirstPackage <- key1
add SecondPackage <- key2
add SecondPackage <- key3
FirstPackage: key0,key1,key2,key3
SecondPackage: key0,key1,key2,key3
Как видно набор значений выводится идентичный для обоих модулей, хотя
задумывалось иначе.
Вот это я ожидал увидеть:
FirstPackage: key0,key1
SecondPackage: key2,key3
Как мне получить на выходе ожидаемый вывод?
--
ak--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org