When I first started using CGI.pm I had the same thought as you... templating issues aside (you should use a template system of some sort for large blocks of HTML) what's the big difference between
print h1("Hello World"); and
print "<h1>Hello World</h1>";. I mean, really.
But as time passed the light went on and I realized that CGI.pm really does make life easier in HTML generation... not for big blocks of static HTML but for all those dynamic things that you're probably using a CGI for in the first place.
For example, think about writing the HTML for a form with checkboxes where some of the checkboxes are pre-checked. Which checkboxes are checked depends on logic within your CGI. If you try to do this using print statements and non-CGI.pm generated HTML you're going to spend an enormous amount of time dealing with if/then statements to determine if "CHECKED" should appear in your static HTML or not. Using CGI.pm it's as simple as passing references to a couple of arrays and you're done. Piece of cake. CGI.pm also makes auto-generation of table tags a total breeze.
In short my vote is:
- For parameter values, use CGI.pm always always always.
- For small amounts of static HTML, generate the HTML tags however you want... I sometimes use both regular tags and CGI.pm tags interchangeably if I'm feeling lazy.
- For non-static HTML more complicated than simple variable interpolation, save yourself the hassle and use CGI.pm.
- For complicated formatting (like using tables for layout) or for large sites (i.e., your CGI is going to produce more than one completely different type of web page) you ought to use a template, either using a home-rolled regex solution (a la the solution in the Ram) or if your needs are more strenuous, one of the many modules.
Gary Blackburn
Trained Killer
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.