in reply to Re: Re: nested tag matching
in thread nested tag matching

First of all, unless you're using a very old version of perl, you can use custom quotes for your regular expressions, i.e.:

s/\[\[tx\]\](.*?)\[\[\/tx\]]/'<customer>'.&txt($1).'<\/customer>'/egsi;

would be much more clear written as:

s|\[\[tx\]\](.*?)\[\[/tx\]\]|'<customer>'.&txt($1).'</customer>'|egsi;

It's not really that much more readable because you have a lot of special charachters in your regular expression, but not having to escape out every / does make things clearer.

You may want to take a lesson from HTML::TreeBuilder or XML::TreeBuilder and create a tree if you're doing a lot of work on your custom tags. Check out the code for XML::TreeBuilder. They basically created it as a subclass of HTML::TreeBuilder, overloaded some of the properties of the Elements, and had a complete system to process and handle XML.