http://qs1969.pair.com?node_id=26226


in reply to (bbq) RE: Re: Another flatfile thingy
in thread Another flatfile thingy

Hmm, did merlyn happen to mention a better construct, the s/// for ... it is something we put into production. I guess an alternative would be  map { s/^\s+|\s+$//g } @headers But I doubt it would be significantly better. I guess I will have to benchmark.

Thanks!

Replies are listed 'Best First'.
(bbq) Re(4): Another flatfile thingy
by BBQ (Deacon) on Aug 04, 2000 at 21:12 UTC
    Nope, he just made a note of it. (Better than running with scissors though) :)

    I'd like to see the results of whatever you come up with in place of s/// for. (either that or I have to RTFM and learn once and for all how to use benchmark;)

    #!/home/bbq/bin/perl
    # Trust no1!
      Doing it in two steps is more efficient. From perlfaq4:
      It is much better faster to do this in two steps: $string =~ s/^\s+//; $string =~ s/\s+$//; Or more nicely written as: for ($string) { s/^\s+//; s/\s+$//; }
      Here's a benchmark:
      use Benchmark; timethese(500_000, { one => sub { my $foo = " perl monks "; $foo =~ s/^\s+|\s+$//g; }, two => sub { my $foo = " perl monks "; for ($foo) { s/^\s+//; s/\s+$//; } }, });
      And here are the results:
      Benchmark: timing 500000 iterations of one, two... one: 11 secs (11.75 usr 0.00 sys = 11.75 cpu) two: 8 secs ( 7.57 usr 0.00 sys = 7.57 cpu)