wannymahoots has asked for the wisdom of the Perl Monks concerning the following question:
I'm attempting to define a method that will calculate the length of an array stored within an object, but am running up against an issue. In the example given below, when I call scaler on the deferenced array (which I would hope would return the array length?), the call behaves as if I'd attempted to call a method of the class called "scaler"? Clearly I'm misunderstanding something fundamental here and would really appreciate any clarification...
Output:{ package Test; our $AUTOLOAD; sub new { my ($class) = @_; return bless {arr => [1,2,3,4]}, $class; } sub len { my ($self) = @_; scaler(@{$self->arr}); } sub DESTROY {} sub AUTOLOAD { my ($self) = @_; (my $f = $AUTOLOAD) =~ s/.+://; print "function \"$f\" called\n"; $self->{$f}; } } my $tmp = Test->new; print $tmp->len,"\n";
function "arr" called function "scaler" called Can't use string ("1") as a HASH ref while "strict refs" in use at ./t +est.pl line 25.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Method to calculate array length
by toolic (Bishop) on Nov 21, 2012 at 13:40 UTC | |
Re: Method to calculate array length (scalar is scalar)
by Anonymous Monk on Nov 21, 2012 at 13:30 UTC | |
by wannymahoots (Novice) on Nov 21, 2012 at 13:36 UTC | |
by rovf (Priest) on Nov 21, 2012 at 15:23 UTC |
Back to
Seekers of Perl Wisdom