Hier an diesem Beispiel will ich das ganze etwas ausführlicher darstellen.
1. Das Script:
#!/usr/bin/perl
# Scriptvariablen
$hp = "http://www.inspire-net.de";
$banner = "http://www.inspire-net.de/inspire.gif";
$tabellenrandfarbe = "#000000";
$tabellenfarbe = "#DFDFDF";
# Subroutine Datum
$datum = &datum;
# Eine TXT Datei per Subroutine ausgeben
$info = &info;
##################################
# Header HTML Datei
open(FILE,"header.html");
foreach $i (<FILE>){
$i =~ s/<%%tabellenrandfarbe%%>/$tabellenrandfarbe/g;
$i =~ s/<%%tabellenfarbe%%>/$tabellenfarbe/g;
$i =~ s/<%%banner%%>/$banner/g;
$header .= $i;
}
close(FILE);
print "Content-Type: text/html\n\n";
print $header;
# Body HTML Datei
open(FILE,"body.html");
foreach $i (<FILE>){
$i =~ s/<%%tabellenrandfarbe%%>/$tabellenrandfarbe/g;
$i =~ s/<%%tabellenfarbe%%>/$tabellenfarbe/g;
$i =~ s/<%%datum%%>/$datum/g;
$i =~ s/<%%info%%>/$info/g;
$body .= $i;
}
close(FILE);
print $body;
# Footer HTML Datei
open(FILE,"footer.html");
foreach $i (<FILE>){
$i =~ s/<%%tabellenrandfarbe%%>/$tabellenrandfarbe/g;
$i =~ s/<%%tabellenfarbe%%>/$tabellenfarbe/g;
$i =~ s/<%%hp%%>/$hp/g;
$footer .= $i;
}
close(FILE);
print $footer;
##################################
# Subroutinen
##################################
sub datum {
# Datumsroutine
@tage = ('Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag');
@monate = ('Januar','Februar','Maerz','April','Mai','Juni','Juli','August',
'September','Oktober','November','Dezember');
($sec, $min, $stunde, $mtag, $mon, $jahr, $tag, $nr_tag, $isdst) = localtime(time);
if($stunde < 10) { $stunde = "0$stunde"; }
if ($min < 10) { $min = "0$min"; }
if ($sec < 10) { $sec = "0$sec"; }
$jahr = 1900 + $jahr;
$datum = "$tage[$tag], $mtag. $monate[$mon] , $jahr";
}
sub info {
open(FILE,"<info.txt");
@info = <FILE>;
close(FILE);
return "@info";
}
2. Die Dateien die das Layout bestimmen
1. header.html
<html>
<head>
<title>Layoutdatei</title>
</head>
<body>
<div align="center">
<table bgcolor="<%%tabellenrandfarbe%%>" width="700"
cellspacing="0" cellpadding="0" border="0">
<tr>
<td>
<table width="100%" cellspacing="1" cellpadding="2" border="0">
<tr>
<td bgcolor="<%%tabellenfarbe%%>" align="center">
<img src="<%%banner%%>"></td>
</tr>
</table></td></tr></table><br>
2. body.html
<table bgcolor="<%%tabellenrandfarbe%%>" width="700"
cellspacing="0" cellpadding="0" border="0">
<tr>
<td>
<table width="100%" cellspacing="1" cellpadding="2" border="0">
<tr>
<td bgcolor="<%%tabellenfarbe%%>" align="center">
<%%datum%%><br><br><%%info%%>
</td>
</tr>
</table></td></tr></table><br>
3. footer.html
<table bgcolor="<%%tabellenrandfarbe%%>" width="700"
cellspacing="0" cellpadding="0" border="0">
<tr>
<td>
<table width="100%" cellspacing="1" cellpadding="2" border="0">
<tr>
<td bgcolor="<%%tabellenfarbe%%>" align="center">
<a href="<%%hp%%>">Homepage</a></td>
</tr>
</table></td></tr></table>
</div>
</body>
</html>
Erläuterungen dazu:
Script Demo: ansehen
Wie jeder sehen wird habe ich im ersten Scriptabschnitt die drei HTML-Templates aufgerufen und
ausgeben lassen. Neu in dem Script hier ist das ich unterhalb zwei Subroutinen definiert habe die dann innerhalb des
body Templates ausgeführt werden.
Man beachte die return "@info"; Anweisung. Hier kann man nicht print
notieren, dies würde dazu führen das die Datei irgendwo, aber bestimmt nicht an der Stelle wo sie hinsoll, ausgegeben würde.
return gibt das zwar auch aus, wir können dies aber an die Stelle der$info
Variable "printen" lassen.
Um das Layout zu ändern braucht also der Benutzer nicht mehr in das Script selbst eingreifen. Es reicht wenn die HTML Templates bearbeitet werden.
|