On Win32, the omni-{present,vorous} explorer control is a convenient way to render html on the fly. This is easy if you write it to a file - however doing it directly from a string requires some non-obvious component manipulation...
use Win32::OLE; # standard IE manipulation my $ie=Win32::OLE->new('InternetExplorer.Application'); die('Creating explorer window: ' . Win32::OLE->LastError()) unless $ie; # make visible $ie->{Visible}=1; # hide a lot of UI stuff $ie->{AddressBar} = $ie->{ToolBar} = $ie->{StatusBar} = $ie->{MenuBar} = 0; # force the creation of the document object $ie->Navigate2('about:'); # this is not directly creatable. my $doc=$ie->document(); die('Creating explorer document: ' . Win32::OLE->LastError()) unless $doc; $doc->write('<html><head></head><body><h1>Cool</h1></body></html>'); sleep(1) while $ie->{Busy}; # if jscript is involved... #$ie->Refresh(); # Shows jscript but crashes ie...why? #...carry on...