Ovid has asked for the wisdom of the Perl Monks concerning the following question:

From perldoc CGI
By default, versions 2.69 and higher emit XHTML ( The -no_xhtml pragma disables this feature. Thanks to Michalis Kabrianis <> for this feature.
I am using version 2.74.

Here's the program:

#!/usr/bin/perl -wT use strict; use CGI::Pretty qw( :standard ); print header, start_html( -title => 'Password Check', -BGCOLOR => 'navy', -text => 'white' ), h1( 'It worked' ), hr(), br(), end_html;
Here's the output:
Content-Type: text/html; charset=ISO-8859-1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> <html xmlns="" lang="en-US"><head><title>P +assword Check</title> </head><body text="white" bgcolor="navy"> <h1> It worked </h1> <hr><br></body></html>
According to the w3c spec (see section 4.6, "Empty Elements):
Empty elements must either have an end tag or the start tag must end with />. For instance, <br/> or <hr></hr>.
Unfortunately, the hr and br tags output by the HTML functions aren't valid XHTML. Is this a bug or is it a feature of transitional XHTML? Do others have this issue?


Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.