Hello all,
I am trying, to understand the Perl module CGI.pm and have two little
questions. First my exercizes:
#! /usr/bin/perl -wT
use strict;
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
use CGI qw/:standard/;
use Socket;
####my VARS################
my $email = "anexample\@[EMAIL PROTECTED]
";
my $url = "http://something.com";
my %colours = (
red => "#ff0000",
green => "#00ff00",
blue => "#0000ff",
black => "#000000",
white => "#ffffff"
);
my $hostname = gethostbyaddr(inet_aton($ENV{REMOTE_ADDR}), AF_INET);
my $ua = $ENV{HTTP_USER_AGENT};
####END my VARS#############
print header,
start_html(-title=>'Hello World, Address, Colours',
-head=>[Link({-rel=>'stylesheet',
-href=>'../styles/style.css',
-type=>'text/css',
-media=>'screen'})
]
),
h1('Hello World!'),
p('And this is a comment to my first Hello World Script!'),
p("My email is $email and my webpage is",
a({-href=>"$url"},"example.org"));
print "<p>";
foreach my $colour (keys %colours) {
print qq(<span style="class:time1; color:$colours{$colour}">$colour</
span><br />\n);
}
print "</p>";
print p("Welcome, dear Visitor from <em>$hostname</em> !");
print "<p>";
print "Your Browser is: $ua<br /><br />";
if ($ua =~ /MSIE/){
print "your browser is Internet Explorer!<br /><br />";
} elsif ($ua =~ /Netscape/i){
print "your browser is Netscape!<br /><br />";
} elsif ($ua =~ /Safari/i){
print "your browser is Safari! Most likely your Operating System
is Macintosh! Isn't it?<br /><br />";
} elsif ($ua =~ /Opera/i){
print "your browser is Opera!<br /><br />";
} elsif ($ua =~ /Mozilla/i){
print "your browser is probably Mozilla!<br /><br />";
} elsif ($ua =~ /Lynx/i){
print "your browser is probably Lynx!<br /><br />";
} else {
print "I give up! Don't know which Browser you are using!<br /
><br />";
}
print "</p>";
print hr({-class=>'guest3'}),
start_form,
p("What's your name? ",textfield('name')),
p("What's the combination? ",
checkbox_group(-name=>'words',
-values=>['eenie','meenie','minie','moe'],
-defaults=>['eenie','minie'])),
p("What's your favorite color? ",
popup_menu(-name=>'color',
-values=>['red','green','blue','chartreuse']),
submit),
end_form,
hr({-class=>'guest3'});
if (param()) {
my $name = param('name');
my $keywords = join ', ',param('words');
my $color = param('color');
print "Your name is ",em(escapeHTML($name)),p,
"The keywords are: ",em(escapeHTML($keywords)),p,
"Your favorite color is ",em(escapeHTML($color)),
hr({-class=>'guest3'});
}
print hr({-class=>'guest3'}),
end_html;
First question: this cgi script inserts an strange DOC-Type, from
which I have never heard off:
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
"http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
May I force mod_perl to insert an other doc-type? For example:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Or is this probably the configuration on the server, where I have no
control to insert a strict-xhtml Header?
By the way: I am unable to make a syntax-check with BBEdit (on
Macintosh) with the Basic-Doc type. Is there a Perl module or an other
way, to check the syntax of this xhtml doc-type in my Shell?
I am trying to produce valid html. And my next question concerns the
form-syntax. My cgi script produces the following:
<form method="post" action="/cgi-bin/first.cgi" enctype="application/x-
www-form-urlencoded">
<p>
What's your name? <input type="text" name="name" />
</p>
<p>
What's the combination? <input type="checkbox" name="words"
value="eenie" checked />eenie <input type="checkbox" name="words"
value="meenie" />meenie <input type="checkbox" name="words"
value="minie" checked />minie <input type="checkbox" name="words"
value="moe" />moe
</p>
<p>
What's your favorite color? <select name="color">
<option value="red">
red
</option>
<option value="green">
green
</option>
<option value="blue">
blue
</option>
<option value="chartreuse">
chartreuse
</option>
</select> <input type="submit" name=".submit" />
</p>
<input type="hidden" name=".cgifields" value="words" />
</form>
Under xhtml-sctrict should be inserted: checked="checked"! How to
achieve this?
thank you for your patience
marek


|