first steps with mod_perl

[email protected] (Marek)
Newsgroups perl.beginners.cgi
Organization http://groups.google.com
Message-ID <[email protected]>

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\@example.com";
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.