package Exp; use 5.006; use strict; use warnings; use Carp; sub new{ my $class = shift; my $validated = _validate( $_[0] ); return bless { validated => $validated, stored => [], },$class; } sub _validate{ croak "No arg!" unless $_[0]; return $_[0]; } sub store { my $self = shift; my $it = _validate( $_[0] ); push @{ $self->{ stored } }, new( $it ); # <---here NOT OK } 1;