Your first three regex do not need the modifier /g. You are using anchors, so the /g modifier is useless here. If you leave it out, the work will be done faster...

Your second regex (one whitespace at the end of line/string) is redundant, because it is already included in the third regex (one or more whitespace(s) at the end of line/string).

You really want to remove all whitespaces from the end of line, but only one from the beginning?

$string =~ s/^\S+//; # assumed to remove *all* whitespaces from the b +eginning $string =~ s/\S+$//; # assumed to remove *all* whitespaces from the e +nd $string =~ s/^\s+|\s+$//g; # /g needed here

Benchmark:

#!/usr/bin/perl # vi:ts=4 sw=4 et: use strict; use warnings; use Benchmark qw( cmpthese ); my $results = cmpthese( -3, { 'r2/g' => sub { my $string = ( ' ' x 1000 ) . 'x' . ( ' ' . 1000 ); $string =~ s/^\s+//g; $string =~ s/\s+$//g; }, 'r2' => sub { my $string = ( ' ' x 1000 ) . 'x' . ( ' ' . 1000 ); $string =~ s/^\s+//; $string =~ s/\s+$//; }, 'r1' => sub { my $string = ( ' ' x 1000 ) . 'x' . ( ' ' . 1000 ); $string =~ s/^\s+|\s+$//g; } } );

Result:

Rate r1 r2/g r2 r1 135605/s -- -19% -25% r2/g 168081/s 24% -- -7% r2 181494/s 34% 8% --

If your text in $string is multilined, you should check perlre for the /m modifier.

update: fixed typo.


In reply to Re: question about reg exp engine by linuxer
in thread question about reg exp engine by chuckd

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.