I'm trying the following code from Programming Perl, but I'm get the
error "Can't call method "type" on unblessed reference at untitled text 10 line
23". I've checked the errata page, but there's nothing listed for it.
Searching on the error message brings up pages about unblessed references, but
I can't make heads or tails out of them. Does anyone know what the problem is?
Thanks,
Marc
use v5.14;
use strict;
use warnings;
package Stables 1.01 {
use Moose;
has "animals" => (
traits => ["Array"],
is => "rw",
isa => "ArrayRef[Animal]",
default => sub { [] },
handles => {
add_animal => "push",
add_animals => "push",
},
);
sub roll_call {
my($self) = @_;
for my $animal($self->animals) {
say "Some ", $animal->type,
" named ", $animal->name,
" is in the stable";
}
}
}
package Animal 1.01 {
use Moose;
has "name" => (
is => "rw",
isa => "Str",
required => 1,
);
has "type" => (
is => "rw",
isa => "Str",
default => "animal",
);
}
my $stables = Stables->new;
$stables->add_animal(
Animal->new(name => "Mr. Ed", type => "horse")
);
$stables->add_animals(
Animal->new(name => "Donkey", type => "donkey"),
Animal->new(name => "Lampwick", type => "donkey"),
Animal->new(name => "Trigger", type => "horse" ),
);
$stables->roll_call;
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/