#!/usr/bin/perl -w package Foo; use base qw(Autoattr); sub get_foo {$_[0]->{foo} .= 'foo'} sub set_bar {$_[0]->{bar} = 'bar' x $_[1]; $_[0]} package Bar; use base qw(Foo); package main; BEGIN {$Autoattr::DEBUG = 1} $_ = Bar->new; printf "\n>>> %s, %s, %s\n\n", $_->foo, $_->foo, $_->foo; printf "\n>>> %s, %s, %s\n\n", do {$_->bar(3); $_->bar}, do {$_->bar(2); $_->bar}, do {$_->bar(1); $_->bar};