Kanji suggested using enclosing angles for the pseudo-sigil to represent a file handle. I like that idea, since it's clear and obvious.

But it's less than elegant in the code. Everything has a prefix char, and here's one that has a postfix as well.

Consider how to simplify this regex:

/(^([$@*%]))|(^<.*>$)/
That is, what I really want is
/^([$@*%<)(.*)(>?)$/
with the stipulation that the $3 is present only if $1 was <, and absent otherwise.

I can certainly do it in a line or 3, especially with lots of comments for clarity. But I'm wondering if there is a really cool way to do it in one succinct bite (wishing for grammars like Perl6 here...).

On a more meditative note, I see that a more powerful pattern engine can make things clearer simply because you can, in analogy with English, sum up your selection with a simple statement of intent, rather than groping for an adjective but having to speak at length about this and that special case.

I see this in documentation, too. If the rule is simple it not only makes the code simple, but makes the documentation easy too.

—John


In reply to conditional match in regex by John M. Dlugosz

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.