in reply to Re: How do I remove whitespace at the beginning or end of my string?
in thread How do I remove whitespace at the beginning or end of my string?

Why are you penalizing the one-regex methods by requiring a separate assignment to $_? You should perhaps do 2 separate benchmarks; one assuming $_ is to be changed, and the other assuming a lexical $f is to be changed.

Update: I'm just saying that benchmarks for performing an operation on $_ won't necessarily carry over to benchmarks for performing an operation on a lexical. In fact, with a lexical, the two-regex method outshines the others even more:

use Benchmark 'cmpthese'; use Regexp::Common 'whitespace'; my $f = ' this is a string with spaces to remove '; cmpthese(-3, { 'Regexp-Common' => sub { my $g=$f; $g=~s/$RE{ws}{crop}//g; }, 'two-s///' => sub { my $g=$f; $g=~s/^\s+//; $g=~s/\s+$//; }, 'one-s///' => sub { my $g=$f; $g=~s/^\s+|\s+$//g; }, 's-capture' => sub { my $g=$f; $g=~s/^\s*(.*?)\s*$/$1/; }, 's-capture2' => sub { my $g=$f; $g=~s/^\s*(\S+(?:\s+\S+)?)?\s*$/$ +1/; }, 'm-capture' => sub { my $g=$f; ($g) = $g=~/(\S+(?:\s+\S+)?)/; + }, });
shows "two-s" gaining more than the others when working on lexicals.
  • Comment on Re: Answer: How do I remove whitespace at the beginning or end of my string?
  • Download Code

Replies are listed 'Best First'.
Re: Re: Answer: How do I remove whitespace at the beginning or end of my string?
by Roy Johnson (Monsignor) on Jan 27, 2004 at 23:52 UTC
    The test is to remove leading and trailing whitespace from a string. The assignment to $_ is an initialization condition of the test: it has to have the string value in it, and then have the whitespace removed.

    Update:
    Oh, now I understand what you're saying. It just didn't occur to me that it could make a significant difference what kind of variable was being operated on.


    The PerlMonk tr/// Advocate