foreach my $key ( @keys ){ my $meth = "get_$key"; $equals = 0 unless ( $hashref->{ $key } eq $obj->$meth() ); } #### #!/usr/bin/perl use strict; use warnings; use Benchmark qw(timethese cmpthese); { package foo; sub get_foo { "@_" }; sub get_bar { "@_" } } my $puk = sub { for (qw(foo bar)) { my $code = "foo->get_$_(qq(bar))"; eval $code; } }; my $rev = sub { for (qw(foo bar)) { my $meth = "get_$_"; foo->$meth("bar"); } }; cmpthese timethese(-2, { rev => $rev, puk => $puk, }); #### Benchmark: running puk, rev for at least 2 CPU seconds... puk: 2 wallclock secs ( 2.08 usr + 0.00 sys = 2.08 CPU) @ 16447.12/s (n=34210) rev: 3 wallclock secs ( 2.08 usr + 0.00 sys = 2.08 CPU) @ 217107.21/s (n=451583) Rate puk rev puk 16447/s -- -92% rev 217107/s 1220% --