{ 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";