perlquestion
wannymahoots
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...
<code>
{
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";
</code>
Output:
<code>
function "arr" called
function "scaler" called
Can't use string ("1") as a HASH ref while "strict refs" in use at ./test.pl line 25.
</code>