#!/usr/bin/perl
# mit POST abgeschickte Daten einlesen. Angenommen wird, dass die Daten von einem Formular
# kommen, das nur ein einziges Eingabefeld (das für den Suchbegriff) enthält.
read (STDIN, $Daten, $ENV{'CONTENT_LENGTH'});
print "Content-type: text/html\n\n";
($void, $suchstring) = split(/=/, $Daten);
# codierte Umlaute etc. wieder herstellen - geht eigentlich viel einfacher und eleganter,
# aber nun ist der Schrott nun mal in der Welt und tut, was er für diese Funktion tun muss.
# Vor der Übernahme in andere Programme sei gewarnt.
$suchstring =~ s/\%E4|\%C4/ä\;/g; # "ä" wieder herstellen
$suchstring =~ s/\%F6|\%D6/ö\;/g; # "ö" wieder herstellen
$suchstring =~ s/\%FC|\%DC/ü\;/g; # "ü" wieder herstellen
$suchstring =~ s/\%DF/ß\;/g; # "ß" wieder herstellen
$suchstring =~ s/\+/ /g; # Leerzeichen wieder herstellen
# diverse beliebte Fehleingaben abfangen
$suchstring =~ s/\%A7[ _]*[0-9\,]+[a-z]*//g; # Paragraphenangaben entfernen
$suchstring =~ s/\%A7//g; # verwaiste Paragraphenzeichen entfernen (können aus Angaben à la "§§ 241f BGB" entstehen)
$suchstring =~ s/[Aa]rt.[ _]*[0-9\,]+[a-z]*//g; # Artikelangaben entfernen
$suchstring =~ s/[\w^][0-9]+[a-z]*//g; # verwaiste Zahlenfolgen, ggf. mit angehängten Buchstaben entfernen (§-Angaben ohne §-Zeichen)
$suchstring =~ s/^ +//g; # Leerzeichen am Stringanfang entfernen
$suchstring =~ s/ +$//g; # Leerzeichen am Stringende entfernen
$suchstring =~ s/ +/ /g; # mehrfache Leerzeichen auf eines reduzieren
$suchstring =~ s/\*$//g; # Sterne am String entfernen, Wildcards funktionieren nicht, und am Wortende ist damit sowieso nur gemeint, was die
# Suchfunktion automatisch macht
$suchstring ="\L$suchstring"; # ganzen Suchstring in Kleinbuchstaben verwandeln
$eingabe = $suchstring;
# Kopf der HTML-Datei ausgeben
print <Suchergebnisse
Suchergebnisse
Suchbegriff: $suchstring
ENDE
# Hier beginnt die eigentliche Suche.
if ($suchstring) {
$durchlauf = 0;
$bund_fund = 0;
$bund_entwurf_fund = 0;
$bund_verk_fund = 0;
$bawue_fund = 0;
$lsa_fund = 0;
$bereich_fund = 0;
while ((!$findus) && $durchlauf < 2) { # durchsucht das Bundesrecht
open (INDEX, "http://www.rechtliches.de/suche.txt");
if ($durchlauf == 1 ) {
print "Nichts gefunden - suche nach Schreibvarianten
"
}
else { # sehr häufig eingegebene Suchfragen beantworten, zu denen es eigentlich nichts gibt
if ("bgbl" =~ /$suchstring/ || "bundesgesetzblatt" =~ /$suchstring/) {
print <Eine Online-Version des Bundesgesetzblatts
stellt der Bundesanzeiger Verlag bereit.
ENDE;
}
if ("bundesangestelltentar" =~ /$suchstring/ || "bat" eq $suchstring) {
print <Der Bundesangestelltentarifvertrag West wird von der
Universität Tübingen in einer Fassung von 2001 bereitgestellt. Die
Gehaltstabellen dazu
sind auf dem Stand von 2003.
Den Bundesangestelltentarifvertrag Ost
stellt die Universität Leipzig in seiner aktuellen Fassung einschlie&azlig;lich
Vergütungstabellen und Zusatzverträgen bereit. Allerdings fehlen einige
Bestimmungen, die für Universitäten nicht relevant sind
ENDE
}
}
while ($zeile = ) {
($name, $abk, $stichwort) = split(/!/, $zeile);
$zeile ="\L$zeile";
if ($durchlauf == 1) {
$zeile =~ s/gesetz//g;
$zeile =~ s/recht//g;
$zeile =~ s/verordnung//g;
$zeile =~ s/ordnung//g;
$zeile =~ s/zehntes/zehnte/g;
$zeile =~ s/neuntes/neunte/g;
$zeile =~ s/achtes/achte/g;
$zeile =~ s/siebtes/siebte/g;
$zeile =~ s/sechstes/sechste/g;
$zeile =~ s/f\ü\;nftes/if\ü\;nfte/g;
$zeile =~ s/viertes/vierte/g;
$zeile =~ s/drittes/dritte/g;
$zeile =~ s/zweites/zweite/g;
$zeile =~ s/erstes/erste/g;
$zeile =~ s/elftes/elfte/g;
$zeile =~ s/ //g;
$zeile =~ s/-//g;
}
if ($zeile =~ /$suchstring/) {
if(!$bund_fund) {
print "Bundesrecht
\n";
print "\n";
$bund_fund = 1;
}
$urlname = ¨auteweg($abk);
print "- $name - $abk
\n";
++$findus;
}
}
close INDEX;
if ($bund_fund) {
print "
\n";
}
open (INDEX, "http://www.rechtliches.de/BaWue/suche.txt"); # durchsucht das Landesrecht von Baden-Württemberg
while ($zeile = ) {
($name, $abk, $stichwort) = split(/!/, $zeile);
$zeile ="\L$zeile";
if ($durchlauf == 1) {
$zeile =~ s/gesetz//g;
$zeile =~ s/recht//g;
$zeile =~ s/verordnung//g;
$zeile =~ s/ordnung//g;
$zeile =~ s/zehntes/zehnte/g;
$zeile =~ s/neuntes/neunte/g;
$zeile =~ s/achtes/achte/g;
$zeile =~ s/siebtes/siebte/g;
$zeile =~ s/sechstes/sechste/g;
$zeile =~ s/f\ü\;nftes/if\ü\;nfte/g;
$zeile =~ s/viertes/vierte/g;
$zeile =~ s/drittes/dritte/g;
$zeile =~ s/zweites/zweite/g;
$zeile =~ s/erstes/erste/g;
$zeile =~ s/elftes/elfte/g;
$zeile =~ s/ //g;
$zeile =~ s/-//g;
}
if ($zeile =~ /$suchstring/) {
if(!$bawue_fund) {
print "Landesrecht Baden-Württemberg
\n";
print "\n";
$bawue_fund = 1;
}
$urlname = ¨auteweg($abk);
print "- $name - $abk
\n";
++$findus;
}
}
close INDEX;
if ($bawue_fund) {
print "
\n";
}
open (INDEX, "http://www.rechtliches.de/LSA/suche.txt");
while ($zeile = ) { # durchsucht das Landesrecht von Sachsen-Anhalt
($name, $abk, $stichwort) = split(/!/, $zeile);
$zeile ="\L$zeile";
if ($durchlauf == 1) {
$zeile =~ s/gesetz//g;
$zeile =~ s/recht//g;
$zeile =~ s/verordnung//g;
$zeile =~ s/ordnung//g;
$zeile =~ s/zehntes/zehnte/g;
$zeile =~ s/neuntes/neunte/g;
$zeile =~ s/achtes/achte/g;
$zeile =~ s/siebtes/siebte/g;
$zeile =~ s/sechstes/sechste/g;
$zeile =~ s/f\ü\;nftes/if\ü\;nfte/g;
$zeile =~ s/viertes/vierte/g;
$zeile =~ s/drittes/dritte/g;
$zeile =~ s/zweites/zweite/g;
$zeile =~ s/erstes/erste/g;
$zeile =~ s/elftes/elfte/g;
$zeile =~ s/ //g;
$zeile =~ s/-//g;
}
if ($zeile =~ /$suchstring/) {
if(!$lsa_fund) {
print "Landesrecht Sachsen-Anhalt
\n";
print "\n";
$lsa_fund = 1;
}
$urlname = ¨auteweg($abk);
print "- $name - $abk
\n";
++$findus;
}
}
close INDEX;
if ($lsa_fund) {
print "
\n";
}
open (INDEX, "http://www.rechtliches.de/rubriken.txt"); # durchsucht die Liste der Rechtsbereiche
while ($zeile = ) {
++$rubrik;
$rubname = $zeile;
chomp($rubname);
$zeile = "\L$zeile";
if ($durchlauf == 1) {
$zeile =~ s/gesetz//g;
$zeile =~ s/recht//g;
$zeile =~ s/verordnung//g;
$zeile =~ s/ordnung//g;
$zeile =~ s/zehntes/zehnte/g;
$zeile =~ s/neuntes/neunte/g;
$zeile =~ s/achtes/achte/g;
$zeile =~ s/siebtes/siebte/g;
$zeile =~ s/sechstes/sechste/g;
$zeile =~ s/f\ü\;nftes/if\ü\;nfte/g;
$zeile =~ s/viertes/vierte/g;
$zeile =~ s/drittes/dritte/g;
$zeile =~ s/zweites/zweite/g;
$zeile =~ s/erstes/erste/g;
$zeile =~ s/elftes/elfte/g;
$zeile =~ s/ //g;
$zeile =~ s/-//g;
}
if ($zeile =~ /$suchstring/ ) {
if(!$bereich_fund) {
print "Rechtsbereiche (Bundesrecht)
\n";
print "\n";
$bereich_fund = 1;
}
print "- $rubname
\n";
++$findus;
}
}
close INDEX;
if ($bereich_fund) {
print "
\n";
}
open (INDEX, "http://www.rechtliches.de/suche2.txt"); # durchsucht die Gesetzentwürfe
while ($zeile = ) {
$rubname = $zeile;
chomp($rubname);
($name, $stichwort) = split(/!/, $zeile);
$eile = "\L$zeile";
if ($eile =~ /$suchstring/ ) {
if ($durchlauf == 1) {
$eile =~ s/gesetz//g;
$eile =~ s/recht//g;
$eile =~ s/verordnung//g;
$eile =~ s/ordnung//g;
$eile =~ s/zehntes/zehnte/g;
$eile =~ s/neuntes/neunte/g;
$eile =~ s/achtes/achte/g;
$eile =~ s/siebtes/siebte/g;
$eile =~ s/sechstes/sechste/g;
$eile =~ s/f\ü\;nftes/if\ü\;nfte/g;
$eile =~ s/viertes/vierte/g;
$eile =~ s/drittes/dritte/g;
$eile =~ s/zweites/zweite/g;
$eile =~ s/erstes/erste/g;
$eile =~ s/elftes/elfte/g;
$eile =~ s/ //g;
$eile =~ s/-//g;
}
if(!$bund_entwurf_fund) {
print "Gesetzentwürfe (Bundesrecht)
\n";
print "\n";
$bund_entwurf_fund = 1;
}
$urlname = ¨auteweg($name);
print "- $name
\n";
++$findus;
}
}
close INDEX;
if ($bund_entwurf_fund) {
print "
\n";
}
open (INDEX, "http://www.rechtliches.de/suche3.txt"); # durchsucht neuere Gesetze wie im BGBl. verkündet (auch reine Änderungsgesetze)
while ($zeile = ) {
++$rubrik;
$rubname = $zeile;
chomp($rubname);
($name, $stichwort) = split(/!/, $zeile);
$eile = "\L$zeile";
if ($durchlauf == 1) {
$eile =~ s/gesetz//g;
$eile =~ s/recht//g;
$eile =~ s/verordnung//g;
$eile =~ s/ordnung//g;
$eile =~ s/zehntes/zehnte/g;
$eile =~ s/neuntes/neunte/g;
$eile =~ s/achtes/achte/g;
$eile =~ s/siebtes/siebte/g;
$eile =~ s/sechstes/sechste/g;
$eile =~ s/f\ü\;nftes/if\ü\;nfte/g;
$eile =~ s/viertes/vierte/g;
$eile =~ s/drittes/dritte/g;
$eile =~ s/zweites/zweite/g;
$eile =~ s/erstes/erste/g;
$eile =~ s/elftes/elfte/g;
$eile =~ s/ //g;
$eile =~ s/-//g;
}
if ($eile =~ /$suchstring/ ) {
if(!$bund_verk_fund) {
print "Neu verkündete Gesetze (Bundesrecht)
\n";
print "Hier erscheinen auch reine Änderungsgesetze (Artikelgesetze).
\n";
print "\n";
$bund_verk_fund = 1;
}
$urlname = ¨auteweg($name);
print "- $name
\n";
++$findus;
}
}
close INDEX;
if ($bund_verk_fund) {
print "
\n";
}
++$durchlauf;
if ($durchlauf == 1) {
$suchstring =~ s/gesetz//g;
$suchstring =~ s/recht//g;
$suchstring =~ s/verordnung//g;
$suchstring =~ s/ordnung//g;
$suchstring =~ s/10\./zehnte/g;
$suchstring =~ s/11\./elfte/g;
$suchstring =~ s/1\./erste/g;
$suchstring =~ s/2\./zweite/g;
$suchstring =~ s/3\./dritte/g;
$suchstring =~ s/4\./vierte/g;
$suchstring =~ s/5\./f\ü\;nfte/g;
$suchstring =~ s/6\./sechste/g;
$suchstring =~ s/7\./siebte/g;
$suchstring =~ s/8\./achte/g;
$suchstring =~ s/9\./neunte/g;
$suchstring =~ s/ //g;
$suchstring =~ s/\-//g;
}
}
print "\n"
} # von if ($suchstring);
# HTML-Ausgabe, falls die Suche erfolglos war
if (!$findus) {
print <Keine passenden Gesetze gefunden.
#
# Hier evtl. auf weitere Suchmöglichkeiten hinweisen
#
ENDE
# Suchanfrage in Logdatei schreiben
open (ERROR, ">>../../findnix.txt");
print ERROR "$eingabe\n";
close ERROR
}
else {
open (NOERROR, ">>../../findwas.txt");
print NOERROR "$eingabe $findus\n";
close NOERROR
}
# Ende der HTML-Datei schreiben
print <Anleitung zur Suche