#!/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
Neue Suche im Datenbestand von rechtliches.de:

ENDE # # ENDE DES HAUPTPROGRAMMS # # Umlaut-Entities und gewisse Sonderzeichen in einem String durch Unbedenkliches ersetzen sub umlauteweg { my $daten = $_[0]; $daten =~s/Ä/Ae/g; #Umlaute gehören nicht in Dateinamen $daten =~s/ä/ae/g; $daten =~s/Ö/Oe/g; $daten =~s/ö/oe/g; $daten =~s/Ü/Ue/g; $daten =~s/ü/ue/g; $daten =~s/ß/ss/g; $daten =~s/\//-/g; # Schrägstriche machen auch Probleme... $daten =~s/ /_/g; # ...ebenso wie Leerzeichen. return ($daten); } # von umlauteweg