#! perl -slw use strict; use Benchmark qw[ cmpthese ]; use vars qw[ $P $N ]; sub describe1 { my $ref = shift; my %person = %{ $ref }; my @__passed_to_print = "$person{person} is a $person{job}"; print @__passed_to_print if $P; } sub describe2 { my $ref = shift; my @__passed_to_print = "$ref->{person} is a $ref->{job}"; print @__passed_to_print if $P; } sub describe3 { my( $person, $job ) = @_; my @__passed_to_print = "$person is a $job"; print @__passed_to_print if $P; } use constant { PERSON=>0, JOB=>1 }; sub describe4 { my @__passed_to_print = "$_[PERSON] is a $_[JOB]"; print @__passed_to_print if $P; } cmpthese( $N || -1, { describe1 => q[ describe1( { person=>'Buffy', job=>'Vampire Slayer' } ); ], describe2 => q[ describe2( { person=>'Buffy', job=>'Vampire Slayer' } ); ], describe3 => q[ describe3( 'Buffy', 'Vampire Slayer' ); ], describe4 => q[ describe4( 'Buffy', 'Vampire Slayer' ); ], });