Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

Re: use English; and performance

by duff (Parson)
on Mar 02, 2006 at 16:04 UTC ( #533943=note: print w/replies, xml ) Need Help??

in reply to use English; and performance

Both. Read the section on performance in English

Basically, using $`, $&, and $' impose a performance penalty on all regular expression matches. Because the English module makes use of these vars, it too imposes the same performance penalty (unless you do as the docs say to avoid it).

Replies are listed 'Best First'.
Re^2: use English; and performance
by asz (Pilgrim) on Mar 02, 2006 at 16:56 UTC
    i'm trying to create a string tokenizer for a config file parser and the best that i've managed to think of is this:
    #!/usr/bin/perl use strict; use Data::Dumper; my $line = q[keyword1 value keyword2 "value with spaces" keyword3 valu +e]; print Dumper tokenize_line($line); sub tokenize_line { my $line = shift; my @tokens; while ($line =~ /(\S+)/g) { # every non-space match is a token push @tokens, $1; # anything in double-quotes is a single token if ($line =~ /\G\s*"(.+?)"/) { push @tokens, $1; # continue from this last match $line = $'; } } return \@tokens; }
    wich outputs this:
    $VAR1 = [ 'keyword1', 'value', 'keyword2', 'value with spaces', 'keyword3', 'value' ];
    i know it's an ugly hack, trying to substitute the original string with the rest of the matched pattern ($line = $';), but in my previous attempts i would use split and substr to achieve the same results... and it was very ugly :)
    what would be a better way to write this? i will be parsing some hundred lines from a config file, so i don't think i want a performance penalty. thank you all for your time and advice!


      Use /gc in your speculative match. /c prevents pos() from being reset on match failure.

      Makeshifts last the longest.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://533943]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (1)
As of 2022-01-29 01:50 GMT
Find Nodes?
    Voting Booth?
    In 2022, my preferred method to securely store passwords is:

    Results (74 votes). Check out past polls.