#!/usr/bin/perl -d:NYTProf use warnings; use strict; use String::Util 'trim'; use Benchmark qw(cmpthese timethese); cmpthese( -30, { 'double_star' => q|double_star(' Mary had a little lamb. ');|, 'double_plus' => q|double_plus(' Mary had a little lamb. ');|, 'double_plus2' => q|double_plus(' Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. ');|, 'replace' => q|replace( ' Mary had a little lamb. ');|, 'for_star' => q|for_star( ' Mary had a little lamb. ');|, 'for_plus' => q|for_plus( ' Mary had a little lamb. ');|, 'regex_or' => q|regex_or( ' Mary had a little lamb. ');|, 'one_liner' => q|one_liner( ' Mary had a little lamb. ');|, 'trim' => q|trim( ' Mary had a little lamb. ');|, } ); print "'trim' => '",trim(' Mary had a little lamb. '),"'\n"; print "'double_star' => '",double_star(' Mary had a little lamb. '),"'\n"; print "'double_plus' => '",double_plus(' Mary had a little lamb. '),"'\n"; print "'double_plus2' => '",double_plus(' Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. Mary had a little lamb. '),"'\n"; print "'replace' => '",replace( ' Mary had a little lamb. '),"'\n"; print "'for_star' => '",for_star( ' Mary had a little lamb. '),"'\n"; print "'for_plus' => '",for_plus( ' Mary had a little lamb. '),"'\n"; print "'regex_or' => '",regex_or( ' Mary had a little lamb. '),"'\n"; print "'one_liner' => '",one_liner( ' Mary had a little lamb. '),"'\n"; exit; sub one_liner { my $string = shift; # $string =~ s/^\ *([A-Z,a-z,0-9]*)\ *$/$1/g; $string =~ s/^\s+|\s+$//g ; return $string; } sub double_star { my $string = shift; $string =~ s/^\s*//; $string =~ s/\s*$//; return $string; } sub double_plus { my $string = shift; $string =~ s/^\s+//; #remove leading spaces $string =~ s/\s+$//; #remove trailing spaces return $string; } sub replace { my $string = shift; $string =~ s/^\s*(\S*(?:\s+\S+)*)\s*$/$1/; return $string; } sub for_star { my $string = shift; for ($string) { s/^\s+//; s/\s+$//; } return $string; } sub for_plus { my $string = shift; for ($string) { s/^\s*//; s/\s*$//; } return $string; } sub regex_or { my $string = shift; $string =~ s/(?:^ +)||(?: +$)//g; return $string; }