It took me a few minutes to see why it's working, and why you can't use it in general.
  1. You are likely missing a /g on the end of that regex match.
  2. What's happening is that $is is getting set to a list of two items, causing the loop to execute twice. The two values are ignored for the next step though.
  3. Since the last regex computed is is, that makes the substitute inside the loop work as if you had said $target =~ s/is/are/. Yup. Always scanning from the left.
So, the only reason this works is because the replacement string cannot once again match the search string. But try it with s/is/iis/, and you'll be totally hosed.

-- Randal L. Schwartz, Perl hacker


In reply to Re: s/// operator and undef question... by merlyn
in thread s/// operator and undef question... by ismail

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.