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

Ah, that was the answer I was looking for. Actually ppm didn't find the package among the repositories I use :(. However is did stimulate me in to looking for other similar modules. For that, thank you! :)

In the end I used Data::SearchReplace:

use warnings; use strict; use HTML::TreeBuilder; use Clone qw(clone); use Data::SearchReplace ('sr'); my $newHTML = ['div', {class => 'ourobject'}, ['script', {language => 'JavaScript', type => 'text/JavaScript'}, 'embedLabTutorClient("VIEW", "URL", WWW, HHH)', ], ['noscript', ['object', {classid=>"CLSID:ReleaseCLSID", width=>'WWW', height=>'HHH', v +iewastext=>'1'}, ['param', {name=>'ViewSettingsUrl', value=>'URL'}], ['param', {name=>'ViewName', value=>'VIEW'}], ] ] ]; my $objUrl = 'somewhere/object.obj'; my $objView = 'erewhon'; my $objWidth = 255; my $objHeight = 127; my $copy = clone ($newHTML); sr {SEARCH => 'WWW', REPLACE => $objWidth}, $copy; sr {SEARCH => 'HHH', REPLACE => $objHeight}, $copy; sr {SEARCH => 'VIEW', REPLACE => $objView}, $copy; sr {SEARCH => 'URL', REPLACE => $objUrl}, $copy; my $element = HTML::Element->new ('root'); $element->push_content ($copy); print $element->as_HTML(undef, ' ', {});

Prints:

<root><div class="ourobject"> <script language="JavaScript" type="text/JavaScript">embedLabTut +orClient("erewhon", "somewhere/object.obj", 255, 127)</script> <noscript> <object classid="CLSID:ReleaseCLSID" height=127 viewastext=1 +width=255> <param name="ViewSettingsUrl" value="somewhere/object.obj" +> <param name="ViewName" value="erewhon"> </object> </noscript> </div></root>

DWIM is Perl's answer to Gödel

Replies are listed 'Best First'.
Re^3: How do I perform a global substitute in an HTML::Element
by BrowserUk (Patriarch) on Apr 21, 2006 at 14:34 UTC

    You have a solution, but actually, Data::Rmap is pure perl, consisting of a single .PM file. There is really no need to seek a binary distribution. As a minimal installation, just downloading and installing that one file into your site/lib tree will suffice.

    The reason it fails the AS auto-build process is it's dependancy upon Test::Exception. I commented out the 6 tests that use that--they simple check that it handles attempts to modify read-only arguments, and the rest of the tests pass fine.


    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.