1. Beispiel, auslesen einer Mitgliederdatei wobei Zeile 1 die Spaltennamen beinhaltet.
Die Mitgliederdatei:
Name|Vorname|Datum|Land|Männlich/Weiblich
Walter|Helmut|2004.02.02|Deutschland|M
Meyer|Lisa|2003.12.28|Deutschland|W
Müller|Maximilian|2002.05.22|Schweiz|M
Lehmann|Hubert|2002.11.01|Oesterreich|M
Schulze|Stefanie|2004.01.04|Deutschland|W
Wolter|Willy|2002.06.09|Oesterreich|M
Thomas|Eva-Maria|2004.01.17|Schweiz|W
Schneyder|Jean|2001.09.04|Frankreich|M
Clerc|Pascale|2002.11.17|Frankreich|M
Benguerel|Sebastian|2003.08.10|Spanien|M
Carl|Johanna|2002.10.01|Deutschland|W
Ziel der Übung soll eine solche Ausgabe sein:

Das komplette Script:
#!/usr/bin/perl
#Fehlerausgabe an Browser
use CGI::Carp qw(fatalsToBrowser);
# Dateiflockmodul einbinden
use Fcntl qw(:DEFAULT :flock);
# Header ausgeben
print "Content-type: text/html\n\n";
# HTML Kopf bis Body ausgeben Dabei kann das was zwischen print qq~ ... ~; steht als
# Normales HTML notiert werden, die " oder die ' Zeichen
# brauchen hier nicht mit vorangestelltem \" notiert werden.
print qq~
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>Namensliste</title>
<style type="text/css">
<!--
th,td {
font-family: Verdana, Arial;
font-size: 11px;
padding: 3px;
color: #000000;
}
-->
</style>
</head>
<body>
~;
# Datei oeffnen und Inhalt in Array @mitglieder ablegen
open (DATEI, "<namensliste.dat") || scripterror("Datei namensliste.dat kann nicht gelesen werden: $!\n");
flock (DATEI, 2);
@mitglieder = <DATEI>;
close DATEI;
# Tabellentitel aus erster Zeile der Datei lesen
# Name|Vorname|Datum|Land|Männlich/Weiblich
($titelname, $titelvorname, $titeldatum, $titelland, $titelmw) = split(/\|/, $mitglieder[0]);
# Tabellenkopf ausgeben Dabei kann das was zwischen print qq~ ... ~; steht als
# Normales HTML notiert werden, die " oder die ' Zeichen
# brauchen hier nicht mit vorangestelltem \" notiert werden.
print qq~
<table cellpadding="2" cellspacing="1" border="0">
<tr>
<th bgcolor="#c5aa74">$titelname</td>
<th bgcolor="#c5aa74">$titelvorname</td>
<th bgcolor="#c5aa74">$titeldatum</td>
<th bgcolor="#c5aa74">$titelland</td>
<th bgcolor="#c5aa74">$titelmw</td>
</tr>
~;
# Hier beginnt nun die for Schleife.
# $i=1 wird auf den Startwert 1 gesetzt um bei Zeile 2 mit
# dem Durchlauf zu beginnen. Zur Erinnerung $i=1 weil ein Arrayindex
# mit 0 beginnt, ergo entspricht 1 der zweite Zeile
for ($i=1; $i <=$#mitglieder; $i++) {
chomp($mitglieder[$i]); # \n am Zeilenende weg
# splitten der Zeilen
($name,$vorname,$datum,$land,$mw) = split(/\|/, $mitglieder[$i]);
# Hier begint die HTML Ausgabe
print qq~
<tr>
<td bgcolor="#ede7d8">$name</td>
<td bgcolor="#ede7d8">$vorname</td>
<td bgcolor="#ede7d8">$datum</td>
<td bgcolor="#ede7d8">$land</td>
<td bgcolor="#ede7d8">$mw</td>
</tr>
~;
} # ende der for Schleife
# Ausgabe des Tabellenendes
print "</table>\n";
# Ausgabe Seitenende
print "</body></html>\n";
# Scripterror Subroutine
sub scripterror {
$fehler = $_[0];
print "<font color=\"red\">$fehler</font>";
exit;
}
|