Sure that is somewhat common advice. But it doesnt apply here. Consider the regex holli posted:

/^(CP|KL|KM|ME|PA|PM|SL|SZ|WX|YZ)XX1/

This allows Perls regex algorithm to exploit a number of optimizations that aren't available in your variant. First, the regex has a common constant string 'XX1' so the regex engine knows it cant match unless it finds that first (and once found it knows where to start looking to see if its a match). Second the algorithm is anchored at the start which means the search is constrained to one spot. It won't traverse the options more than once per line.

The trick you showed actually allows the constant string match to work, but is still probably a touch slower than using two index calls.

---
demerphq


In reply to Re^3: perl performance vs egrep by demerphq
in thread perl performance vs egrep by dba

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.