in reply to CGI Tables

dws has you covered, but i felt very inclined to offer a little advice. If you don't know anything about X but you know a bit about Y, even if you know X is better, you should probably stick with what you know. I primarily use CSS for markup -- i have only (successfully) used CSS for layout/positioning at one site i created. Even though i agree we should use CSS instead of tables for layout, the fact remains that i can get the job done quicker (and know what i am doing) with tables than with CSS. I am not saying i shouldn't be using CSS for layout, i am simply saying that i don't have time right now to really grok CSS.

Having said all of that, should you wish to see what using CGI.pm and CSS layout looks like instead of more examples that you can get from dws's link above ... here is an example that uses CGI.pm to recreate the two box example from Owen Briggs' Box Lessons. But first, here are some links from hacker of sites that he has designed using CSS instead of tables. Hope this helps. :)
use strict; use warnings; use CGI qw(:standard); my $style = do {local $/;<DATA>}; print header(), start_html(-style=>{-code=>$style}), div({-id=>'content'}, 'blah ' x 40), div({-id=>'content2'}, 'blah ' x 40), end_html, ; __DATA__ #content { float: left; padding: 10px; margin: 20px; background: #666; border: 5px solid #ccc; width: 300px; /* ie5win fudge begins */ voice-family: "\"}\""; voice-family:inherit; width: 270px; } html>body #content { width: 270px; /* ie5win fudge ends */ } #content2 { float: left; padding: 10px; margin: 20px; background: #666; border: 5px solid #ccc; width: 300px; /* ie5win fudge begins */ voice-family: "\"}\""; voice-family:inherit; width: 270px; } html>body #content2 { width: 270px; /* ie5win fudge ends */ }

jeffa

L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)