Browser Based Content
#!/usr/local/bin/perl
use CGI;
if( $ENV{'HTTP_USER_AGENT'} =~ /Mozilla\/3.0/ )
{
$document = "/js11page.html";
}
else
{
$document = "/nojspage.html";
}
# This subroutine comes from CGI
print $query->header( "text/html" );
# Think about how you would use this script for
# your entire site!!!
$htmldoc = $document;
if( open( HTML, "< $htmldoc" ) )
{
while( <HTML> )
{
print;
}
close( HTML );
}
else
{
# From Reuven M Lerner's March 1997 Linux Journal article
&log_and_die( "Tried to open $htmldoc" );
}
exit 0;
Error Handling
#!/usr/local/bin/perl5 -w
use strict; # Check our syntax strictly
use diagnostics; # Tell us how to fix mistakes
use CGI; # Import the CGI module
use CGI::Carp;
# Create an instance of CGI
my $query = new CGI;
sub log_and_die
{
# Get arguments
my $string = shift;
# Begin the HTML
print $query->start_html(-title => "Error");
# Give a message
print "<P>Sorry, but this program has";
print "encountered an error. The system ";
print "administrator has been ";
print "informed</P>\n";
print "<P>Would you like to return to the ";
print "<a href=\"/\">home page</a>?\n";
# End the HTML
print $query->end_html();
# Now die with the error message
die $string;
}
This code used with permission from Reuven M. Lerner and The Linux Journal
A Better Mailto Form
#!/usr/local/bin/perl
require "cgi-lib.pl";
# Flow control begins here
$message_body = undef;
$error = 0;
# Load the input variables
&ReadParse( *input );
# Print the HTTP header
print &PrintHeader;
# Set up the message body
$message_body .= "Name: $input{'name'}\n" if( "$input{'name'}" ne undef );
$message_body .= "Email: $input{'email'}\n" if( "$input{'email'}" ne undef );
$message_body .= "Comments:\n$input{'comments'}\n";
# Print the top of the page
print "<HTML><HEAD><TITLE>Your title here</TITLE></HEAD><BODY>\n";
# Print the body of the page
if( "$input{'comments'}" eq undef )
{
print "<P>You have not entered a comment.</P>";
print "<P>Please press the back button on your browser and complete ";
print "the form.</P>";
$error = 1;
}
else
{
# This could be bad!!!
print "<P><B><FONT SIZE=\"+1\">Thanks $input{'name'}.</FONT></B></P>\n";
}
# Print the bottom of the page
print "</BODY></HTML>\n";
if( ! $error )
{
open( MAIL, "|/usr/lib/sendmail -t -n" );
print MAIL <<EndOfMessage
From: mailto form
To: userid\@host.com
Subject: mailto form
$message_body
EndOfMessage
;
exit;
}
Last Modified: 17 February 1997
St. Louis Unix Users Group - Linux SIG