Я просто пытаюсь сделать это: http://modernperlbooks.com/mt/2011/08/youre-already-using-dependency-injection.html. На самом деле не отклонять слишком много от этого примера кода.Perl + moose: Невозможно вызвать метод «x» по неопределенному значению
Вот что я получил:
package M;
use Moose;
use Exporter;
use Data::Dumper;
sub new {
print "M::new!\n";
my $class = shift;
return bless {}, $class;
}
sub x {
my ($self, $stuff) = @_;
print Dumper($stuff);
}
#################################
package Foo;
use Moose;
use Exporter;
our @ISA = qw(Exporter);
our @EXPORT =();
has 'mS', is => 'ro', default => sub { M->new };
sub new {
my $class = shift;
return bless {}, $class;
}
sub bar {
my ($self, $data) = @_;
# do stuff here...
# ...
my $foo = $self->mS;
# this...
$foo->x($data);
# ...causes "Can't call method "x" on an undefined value at Foo.pm line 45."
}
1;
Стоит отметить, что никогда не появится M::new!
сообщение, поэтому я предполагаю, что он никогда не достиг. Что происходит?
С [Moose] (http://p3rl.org/Moose), не записывается 'sub new'. – choroba