The Real XML Way (tm) to solve the < problem is to replace it by &lt;, although this implies that every software that uses the file either knows how to replace &lt; by < or (even better) uses an XML parser to filter the input.

As I mentionned in On XML Parsing any approach not based on an XML parser (including your boss' Python hack) does not usually process the full range of XML feature, so if you chose to move to XML as a format do yourself a favor and use one.

If you chose to use XML you can then use CDATA sections to embed < in elements:

<elt><![CDATA[it is now safe to use <, > & and the likes here]]></elt>

As for XML modules look at Module Reviews for a bunch of reviews and at my site http://www.xmltwig.com/article/ for reviews and benchmarks.


In reply to Re: Parse::RecDescent Woes by mirod
in thread Parse::RecDescent Woes by beppu

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.