Rhesa Rozendaal




version 1.05


  use CGI::Application::Plugin::HtmlTidy;
  sub cgiapp_postrun {
    my ($self, $contentref) = @_;

        # your post-process code here

  # generate a validation report
  use CGI::Application::Plugin::DevPopup;
  use CGI::Application::Plugin::HtmlTidy;


This release integrates with CGI::Application::Plugin::DevPopup. If that plugin is active, this one will add an HTML validation report. As a consequence, htmltidy_validate() is no longer exported, and should not be called directly.




The htmltidy_clean modifies your output to conform to the W3C standards. It has been in use for quite some time on a largish site (generating over 10 million pages per day) and has proven to be quite stable and fast. Every single page view is valid html, which makes many browsers happy :-)


libtidy is extremely configurable. It has many options to influence how it transforms your documents. HTML::Tidy communicates these options to libtidy through a configuration file. In the future, it may also allow programmatic access to all options.

You can specify the configuration using cgiapp's param() method, or in your instance script through the PARAM attribute, or through the htmltidy_config() method. This plugin looks for a parameter named htmltidy_config, whose value should be a hash ref. This hash ref is then passed on directly to HTML::Tidy. Currently the only supported parameter is "config_file".

Here's an example:

  sub setup {
    my $self = shift;
        $self->param( htmltidy_config => {
                            config_file => '/path/to/my/tidy.conf',

This plugin comes with a default configuration file with the following settings:

        tidy-mark:      no
        wrap:           120
        indent:         auto
        output-xhtml:   yes
        char-encoding:  utf8
        doctype:        loose
        add-xml-decl:   yes
        alt-text:       [image]



Direct access to the underlying HTML::Tidy object.


Pass in a hash of options to configure the behaviour of this plugin. Accepted keys are:


The path to a config file used by tidy. See the tidy man page for details.

tidy config options

HTML::Tidy 1.08 now supports tidy options directly, so there is no need for a separate config file anymore.


If you're using CGI::Application::Plugin::DevPopup, this method is used to generate a report for it.It parses your output, and generates a detailed report if it doesn't conform to standards.


Parses and cleans your output to conform to standards.


CGI::Application, HTML::Tidy.

The cgiapp mailing list can be used for questions, comments and reports. The CPAN RT system can also be used.


Rhesa Rozendaal, <rhesa@cpan.org>


Copyright (C) 2005-2007 by Rhesa Rozendaal
