in reply to How do I perform a global substitute in an HTML::Element

Three possibilities off the top of my head.

First, do your substitutions on the string returned from as_HTML. A little error-prone, but probably not that bad.

Second, stop using HTML::Element. Use HTML::Template instead. You could put the template in your __DATA__ section.

Third, use Template Toolkit - instead of having WWW and HHH, etc., have [%WWW%] and [%HHH%], etc. And then you can feed the as_HTML output into Template Toolkit to do the next level of modification. You can't easily do this with HTML::Template only because having <tmpl_var name="HHH"> instead of just HHH would get modified by HTML::Element to look like &lt;tmpl_var name="HHH"&gt; inside the tags, and that would defeat it. TT2 could handle that largely because it uses different delimiters.

I realise that you are probably looking for a way to traverse the data structure. That's just not the way I'm looking at the problem - I have a different box to think inside of ;-}

Replies are listed 'Best First'.
Re^2: How do I perform a global substitute in an HTML::Element
by GrandFather (Saint) on Apr 21, 2006 at 03:10 UTC

    This is in the context of code that is editing existing HTML to replace object elements with a chunk of script.

    Option 1 simply won't work because many parameters need to be replaced with different values in different contexts.

    Options 2 and 3 probably don't make sense in this context. XML::Twig would be great, but XHTML these pages are not!

    Currently I'm doing it by navigating the structure, but that is rather fragile!


    DWIM is Perl's answer to Gödel