Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: Calling functions in middle of CGI HTML declarations

by GrandFather (Sage)
on Aug 26, 2012 at 22:44 UTC ( #989886=note: print w/ replies, xml ) Need Help??


in reply to Calling functions in middle of CGI HTML declarations

As Mr. Muskrat suggests you really should consider using a templating system. I recommend HTML::Template is a fairly easy entry point for this sort of task. Consider:

#!/usr/bin/perl use strict; use warnings; use HTML::Template qw(); use CGI qw(); my $fName = 'sample.html'; open my $temp, '>', $fName or die "Can't create $fName: $!\n"; print $temp <<'HTML'; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-U +S"> <head> <title><TMPL_VAR name="title"></title> <meta http-equiv="Content-Type" content="text/html; charset=iso-88 +59-1" /> </head> <body> <div id="<TMPL_VAR name="divname">"> <TMPL_LOOP name="divs"> <div><TMPL_VAR name="div"></div> </TMPL_LOOP></div> </body> </html> HTML close $temp; my $tmpl = HTML::Template->new(filename => $fName); my @fields = qw(Hello Goodbye Friend Adios Amigo); my @loopParams = map {{div => $_}} @fields; print CGI::header(); $tmpl->param(title => "testme"); $tmpl->param(divname => 'div-test'); $tmpl->param(divs => \@loopParams); print $tmpl->output();

Prints:

Content-Type: text/html; charset=ISO-8859-1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-U +S"> <head> <title>testme</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-88 +59-1" /> </head> <body> <div id="div-test"> <div>Hello</div> <div>Goodbye</div> <div>Friend</div> <div>Adios</div> <div>Amigo</div> </div> </body> </html>
True laziness is hard work


Comment on Re: Calling functions in middle of CGI HTML declarations
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://989886]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (7)
As of 2015-07-31 03:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (274 votes), past polls