$str = "===test==="; if( $str =~ /(\w+)/ ) { print "[$str] ($1)\n"; substr( $str, 5, 2, 'mp' ); print "[$str] ($1)\n"; } __END__ [===test===] (test) [===temp===] (test) #### use strict; use Benchmark qw< cmpthese >; my $doc = ' "a string",' x 1_024_000; cmpthese( -1, { copy => sub { return $1 if $doc =~ /(['"])/; }, substr => sub { return substr( $doc, pos($doc)-1, 1 ) if $doc =~ /['"]/g; }, } ); __END__ Rate copy substr copy 38.6/s -- -100% substr 382480/s 991549% -- #### if( $doc =~ s/^\s*(['"])// ) { parse_string($1);