#!/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; }