package Demo;
use Moose;
has test => (is => 'rw', isa => 'ArrayRef');
sub check {
$self->test(());
}
####
$ perl -c pm_1201774_moose_demo.pm
Global symbol "$self" requires explicit package name (did you forget to declare "my $self"?) at pm_1201774_moose_demo.pm line 8.
pm_1201774_moose_demo.pm had compilation errors.
####
sub check {
my ($self) = @_;
$self->test(());
}
####
$ perl -c pm_1201774_moose_demo.pm
pm_1201774_moose_demo.pm syntax OK
####
package Demo;
use Moose;
has test => (is => 'rw', isa => 'ArrayRef');
sub check {
my ($self) = @_;
$self->test(());
$self->test()->[0] = 'X';
}
package main;
Demo::->new->check;
####
$ perl -c pm_1201774_moose_demo.pm
pm_1201774_moose_demo.pm syntax OK
$ perl pm_1201774_moose_demo.pm
Can't use an undefined value as an ARRAY reference at pm_1201774_moose_demo.pm line 12.
####
$self->test([]);
####
$ perl -c pm_1201774_moose_demo.pm
pm_1201774_moose_demo.pm syntax OK
$ perl pm_1201774_moose_demo.pm
$
####
... Fields ... isa => 'HashRef' ...
$self->Fields({});
####
$Cnt = scalar $self->Fields;
####
$ perl -E 'my $x = {a=>1,b=>2}; say scalar $x; say scalar keys %$x'
HASH(0x7ffe120040b0)
2
####
$self->FieldCount = $Cnt;
$self->Changed = -1;
####
... FieldCount ... isa => 'Num' ...
... Changed ... isa => 'Boolean' ...
####
... Can't modify non-lvalue subroutine call at ...
####
$ perl -E 'my $x = -1; say $x ? "true" : "false"'
true