package Dummy;

use strict;
use vars qw($AUTOLOAD);

sub AUTOLOAD {
	my ($self, @args) = @_;
	local $| = 1;
	
        use Data::Dumper;
        local $Data::Dumper::Terse = 1;
        local $Data::Dumper::Indent = 0;

	my $printable_args = Dumper \@args;
        $printable_args = substr $printable_args, 1, -1; # lose [, ]

	my $method = $AUTOLOAD;

	my @return;

	INPUT: {
		print STDERR "$method($printable_args) = ";
	
		chomp(my $return = <>);

		@return = wantarray ?
			(eval $return) :
			(scalar(eval $return));
		if ($@) {
			print "$@";
			redo INPUT;
		}

		if ("@return" ne $return) {
			print STDERR "  = ", join ', ', @return;
			print STDERR "\n";
		}
	}

	return wantarray ? @return : $return[0];
}

package Dummy2;

use vars qw(@ISA);

@ISA = qw(Dummy);

sub new {
	my $pkg = shift; return bless {@_}, $pkg;
}

sub DESTROY { }

1
