$str =~ m/[^<story>]/
That doesn't do what you think it does. What it does, is match "any character that isn't one of '<', 's', 't', 'o', 'r', 'y', '>'". What behaves more like what you're after, is (?!<story>) or (?<!<story>), i.e. negative lookahead or lookbehind. But even that wouldn't work, as it can still match a string containing "<story>", only not at that exact spot.

What I would do, if using a full-blown XML/SGML/HTML parser is deemed unnecessary, is match both the substrings between "story" tags, and other substrings between "image" tags, in that order of matching precedence. And only keep the latter.

Try this on for size:

@images = grep defined, $str =~ m#<story>.*?</story>|<image>(.*?)</ima +ge>#gs;
That'll match every correct image. If you're sure you want just one, you still need the /g modifier and the list context, but only keep the first proper match:
my($image) = grep defined, $str =~ m#<story>.*?</story>|<image>(.*?)</ +image>#gs;

In reply to Re: REGEX issue by bart
in thread REGEX issue by siva kumar

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.