use Benchmark; my $foo = "bar"; my $test = new tester(); my ($buffer, $i); my $a1 = new Benchmark; for( $i=1; $i<1_000_000; $i++ ) { $buffer = $foo; } my $a2 = new Benchmark; my $b1 = new Benchmark; for( $i=1; $i<1_000_000; $i++ ) { $buffer = $test->report(); } my $b2 = new Benchmark; my $diff1 = timediff($a1, $a2); my $diff2 = timediff($b1, $b2); print "Variable copying: " . timestr($diff1) . "\n"; print "Object copying: " . timestr($diff2) . "\n"; package tester; sub new { my $class = shift; my $self = { 'foo' => "bar" }; bless $self, $class; return $self; } sub report { my $self = shift; return $self->{'foo'}; } #### Variable copying: -1 wallclock secs (-0.81 usr + 0.00 sys = -0.81 CPU) Object copying: -5 wallclock secs (-5.15 usr + 0.00 sys = -5.15 CPU)