I'm trying to use Moose with Moose :: Meta :: Attribute :: Native :: Trait :: Array, but it looks like the ArrayRef helper is not working for me. Bellow is my code that returns
Can't call method "add_item" on unblessed reference at bug.pl line 42.
I am using Moose 2.0007 and Perl v5.10.1. Moose :: Autobox is installed. I would appreciate any suggestion.
#! / usr / bin / perl
use strict;
package CycleSplit;
use Moose;
has 'name' => (isa => 'Str', is => 'rw');
has 'start' => (isa => 'Num', is => 'rw');
has 'length' => (isa => 'Num', is => 'rw');
1;
package Cycle;
use Moose;
my @ empty = ();
has 'name' => (isa => 'Str', is => 'rw');
has 'splits' => (
traits => ['Array'],
isa => 'ArrayRef [CycleSplit]',
is => 'rw',
default => sub {[]},
handles => {
add_item => 'push',
},
);
no Moose;
1;
package Main;
sub Main {
my $ cyc = Cycle-> new ();
$ cyc-> name ("Days of week");
for my $ i (1..7) {
my $ spl = CycleSplit-> new ();
$ spl-> name ("Day $ i");
$ spl-> start ($ i / 7- (1/7));
$ spl-> length (1/7);
$ cyc-> splits-> add_item ($ spl);
}
my $ text = '';
foreach my $ spl ($ cyc-> splits) {
$ text. = $ spl-> name. "";
}
print $ text;
}
Main;
source
share