tjios is a suggestion to circumvent all those errorprone hassles ... *grin*
if using apache or a server that has a similar mechanism modify .htaccess in your WEBSERVER_ROOTDIR or in the subdir where those settings shall apply as follows
ErrorDocument 400 /cgi-bin/error500.cgi
ErrorDocument 401 /cgi-bin/error500.cgi
ErrorDocument 402 /cgi-bin/error500.cgi
ErrorDocument 403 /cgi-bin/error500.cgi
ErrorDocument 404 /cgi-bin/error500.cgi
ErrorDocument 500 /cgi-bin/error500.cgi
put the script in its place and modify it as needed
#!/usr/bin/perl -wT
use strict;
$|++;
BEGIN {
unshift @INC, '/home/little/lib';
unshift @INC, '/home/little/extlib';
}
use CGI qw(-compile :all);
$CGI::DISABLE_UPLOADS = 1;
$CGI::POST_MAX = 0;
my $url = 'http://little.perlmonk.org/';
#print redirect(-uri => "$url", -expires=>"now") if ($ENV{'REDIRECT_RE
+DIRECT_STATUS'} eq "200");
use CGI::SSI(autotie => 'STDOUT');
#use CGI::Pretty;
use XML::Simple;
my $messages = "";
$messages = XMLin('/home/little/my/prefs/sysmesg.xml');
autoEscape(undef);
print
header(-status=>$ENV{'REDIRECT_STATUS'},-charset=>'iso-8859-1', -expir
+es=>"now"),
#'<!--#include virtual="/includes/logic/docinfo.shtml" -->',
start_html(
-title=>$messages->{error}->{$ENV{'REDIRECT_STATUS'}}->{title},
-head=>meta({ -http_equiv=>'Content-Type', -content => 'text/html;
+ charset=iso-8859-1'}),
-base=>'true',
-xbase=>$url,
-lang=>'de-DE',
-style=>{-src=>'/styles/rb_app.css'},
# -script=>[
# {-language=>'JavaScript',
# -src=>'/scripts/rb_menu.js'}
# ]
),
#'<!--#include virtual="/includes/header/header.shtml" -->',
div({-id=>"main"},
h1($ENV{'REDIRECT_STATUS'}." - ".$messages->{error}->{$ENV{'REDIRE
+CT_STATUS'}}->{title}),
p($messages->{error}->{$ENV{'REDIRECT_STATUS'}}->{description}),
),
#'<pre><!--#printenv --></pre>',
'<!--#include virtual="/includes/footer.shtml" -->',
#end_html()
;
1;
It's possibly not the best one of its kind but suffices at least my needs. *smile*
and here is the according xml file
<?xml version="1.0" ?>
<messages>
<error name="400">
<title><![CDATA[Ungültige Anfrage]]></title>
<description><![CDATA[
Das angeforderte Dokument existiert nicht oder nicht m
+ehr auf diesem Server oder wurde an eine andere Stelle verschoben.
]]></description>
</error>
<error name="401">
<title><![CDATA[Autorsierung erforderlich]]></title>
<description><![CDATA[
Das angeforderte Dokument ist gegen unerlaubten Zugrif
+f geschützt. Für den Zugriff ist ein gültiger Benutzer
+name (Login) und ein Passwort erforderlich.
]]></description>
</error>
<error name="402">
<title><![CDATA[Zugriff kostenpflichtig]]></title>
<description><![CDATA[
Wenn Sie diese Seite sehen, dürfen Sie uns eine f
+reiwillige Spende übersenden.
:-)
]]></description>
</error>
<error name="403">
<title><![CDATA[Zugriff verweigert]]></title>
<description><![CDATA[
Das angeforderte Dokument ist nicht öffentlich zu
+gänglich.
]]></description>
</error>
<error name="404">
<title><![CDATA[Dokument nicht gefunden]]></title>
<description><![CDATA[
Das angeforderte Dokument existiert nicht oder nicht m
+ehr auf diesem Server oder wurde an eine andere Stelle verschoben.
]]></description>
</error>
<error name="420">
<title><![CDATA[Zeitweise nicht verfügbar]]></tit
+le>
<description><![CDATA[
Das angeforderte Dokument existiert auf diesem Server
+ist jedoch in Bearbeitung und steht daher zur Zeit leider nicht zur V
+erfügung.
Bitte versuchen Sie es später erneut. Vielen Dank
+ für Ihr Verständnis.
]]></description>
</error>
<error name="500">
<title><![CDATA[Interner Server-Fehler]]></title>
<description><![CDATA[
Bei der Bearbeitung der Anfrage hat eine Anwendung ein
+en Fehler verursacht.
]]></description>
</error>
<error name="other">
<title><![CDATA[Fehler]]></title>
<description><![CDATA[
Bei der Bearbeitung der Anfrage ist ein Fehler aufgetr
+eten.
]]></description>
</error>
</messages>
Have a nice day
All decision is left to your taste
Update
Or see CGI::Test::Page::Error for a module.