#!/usr/bin/perl -w use Benchmark; @a1 = qw(3 99 4 33 43 98 83 64 3 99 4 33 43 98 83 64 99 4 33 43 98 83 64); @a2 = qw(3 99 4 33 43 98 83 64 3 99 4 11 43 98 83 64 99 4 33 43 98 83 64); #middle different @a3 = qw(1 99 4 33 43 98 83 64 3 99 4 11 43 98 83 64 99 4 33 43 98 83 64); #first different @a4 = qw(1); # different size sub join_eq { return join('',@{$_[0]}) eq join('', @{$_[1]} ); } sub quote_eq { return "@{$_[0]}" eq "@{$_[1]}"; } sub better_quote { if ("@{$_[0]}" eq "@{$_[1]}") { local $" = 'a'; return 1 if ("@{$_[0]}" eq "@{$_[1]}"); } return 0; } sub loop_eq { my ( $a1, $a2 ) = @_; return 0 if ($#$a1 != $#$a2); for ( 0 .. $#a1 ) { return 0 if ( $$a1[$_] ne $$a2[$_] ); } return 1; } print "\nEqual sized strings.\n"; timethese(-2, { join => q{ join_eq( \@a1, \@a1 ) }, quote => q{ quote_eq( \@a1, \@a1 ) }, bquoteSame => q{ better_quote( \@a1, \@a1 ) }, bquoteDiff => q{ better_quote( \@a1, \@a2 ) }, loopSame => q{ loop_eq( \@a1, \@a1 ) }, loopMid => q{ loop_eq( \@a1, \@a2 ) }, loopBeg => q{ loop_eq( \@a1, \@a3 ) } } ); print "\nDifferent sized.\n"; timethese(-2, { join => q{ join_eq( \@a1, \@a4 ) }, quote => q{ quote_eq( \@a1, \@a4 ) }, bquote => q{ quote_eq( \@a1, \@a4 ) }, loop => q{ loop_eq( \@a1, \@a4 ) } } );