#!/usr/bin/perl -w
# Hauptvariablen; sie sind an andere Anforderungen anzupassen.
$LatexFile="Einladung.tex";
$Abfrage='select * from adressen';
$OutFile="Einl_";
$WhatToDo="tv";
# Mal eben die LaTeX-Datei einlesen
open(LATEX, "< $LatexFile");
$j="";
while(defined($i=<LATEX>))
{
$j.=$i;
}
close(LATEX);
use Pg;# Das PosgreSQL-Modul wird geladen.
# Die Datenbank-Verbindung wird aufgebaut.
$conn = Pg::connectdb("dbname=adressen");
Pg::doQuery($conn, $Abfrage, \@ary); # Referenz der Antwort-Tabelle wird übergeben.
# Das Ergebnis wird als "Liste von Listen" zurückgegeben.
for $i ( 0 .. $#ary )
{
for $j ( 0 .. $#{$ary[$i]} )
{
# Überflüssige Leerzeichen werden entfernt.
$ary[$i][$j]=~ s/\s*(.*)\s*/$1/;
}
}
for $i ( 0 .. $#ary )
{
# Variablen werden aus der Datenbank mit Werten gefüllt.
($Vorname, $Nachname, $Abteilung, $Organisation, $Strasse, $Hausnummer, $Postfach, $Postleitzahl, $Ort, $Tel, $Fax, $email, $HTTP, $weiblich)=@{$ary[$i]};
# Sonderinhalte werden speziell verändert.
$Abteilung=&ol($Abteilung); $Organisation=&ol($Organisation); $Postfach=&ol($Postfach);
# Das Ergebnis wird ausgegeben.
&drucke_Einladung;
}
sub drucke_Einladung()
{
$PostgresAdresse="$Vorname $Nachname\\\\\n$Abteilung$Organisation$Strasse $Hausnummer\\\\\n$Postfach$Postleitzahl $Ort";
# print $PostgresAdresse;
if($weiblich eq "t")
{
$PostgresAnrede="Sehr geehrte Frau $Vorname $Nachname,";
}
else
{
$PostgresAnrede="Sehr geehrter Herr $Vorname $Nachname,";
}
# print $PostgresAnrede;
# Hier werden die "$Postgres"-Zeichen in der LaTeX-Datei interpretiert.
($out=$j)=~ s/PostgresAdresse/$PostgresAdresse/gs;
($out=$out)=~ s/PostgresAnrede/$PostgresAnrede/gs;
open(LATEXOUT, "> $OutFile$i.tex");
print LATEXOUT ("$out");
close(LATEXOUT);
system("$WhatToDo $OutFile$i.tex");
}
sub tw
{
my $a=shift;
$a =~ /\s*(.*)\s*/;
return $1;
}
sub ol
{
my $a=shift;
if(defined($a) && length($a)!=0)
{
$a.="\\\\\n";
}
return $a;
}