#!/usr/bin/perl -d:NYTProf use warnings; use strict; use String::Util 'trim'; use Benchmark qw(cmpthese timethese); cmpthese( -30, { compress_1 => q|compress_1(' Mary had a little lamb. ');|, compress_2 => q|compress_2(' Mary had a little lamb. ');|, compress_3 => q|compress_3(' Mary had a little lamb. ');|, squash => q|squash(' Mary had a little lamb. ');|, split_join => q|split_join(' Mary had a little lamb. ');|, } ); print "'compress_1' => '",compress_1(' Mary had a little lamb. '),"'\n"; print "'compress_2' => '",compress_2(' Mary had a little lamb. '),"'\n"; print "'compress_3' => '",compress_3(' Mary had a little lamb. '),"'\n"; print "'squash' => '",squash(' Mary had a little lamb. '),"'\n"; print "'split_join' => '",split_join(' Mary had a little lamb. '),"'\n"; exit; sub compress_1 { my $string = shift; $string =~ s/ +/ /g; return $string; } sub compress_2 { my $string = shift; $string =~ s/\h+/ /g; return $string; } sub compress_3 { my $string = shift; $string =~ s/ {1,}/ /g; return $string; } sub squash { my $string = shift; $string =~ tr/ //s; return $string; } sub split_join { my $string = shift; $string = join ' ', split ' ', $string; return $string; }