Christoph Schnauß: Premature end of script headers

Beitrag lesen

hi,

Ich habe ein Problem mit einem Perl-Script. Es handelt sich dabei um ein Such-Script, das

... stark danach aussieht, als ob es vor gaaaanz langer Zeit mal das "search.pl" von Matt Wright (1996) gewesen wäre ;-) Du hast es bloß sehr fleißig umgebaut. Dabei aber vergessen, wie Matt W. dieses Problem seinerzeit gelöst hatte.

Auf einem T-online Server ist es komplett einwandfrei gelaufen

Wiebitte? Das ist mir völlig neu, daß t-online eigene scripts zuläßt. Kannst du das mal bitte erklären, wie du das angestellt hast? Ich wäre ziemlich glücklich, wenn ich eigene Scripts bei t-online einsetzen könnte.

Könntet Ihr mir da bitte helfen?

Naja, versuchen kann ich es, aber obs was nutzt ...

foreach $FILE (@FILES) {
open(FILE, "$FILE");
@LINES= <FILE>;
close(FILE);
$string = join(' ', @LINES);
$string =~ s/\n//g;

Diese Zeilen sind noch _original_ bei Matt Wright abgeschrieben ;-)
Und die nachfolgende Konstruktion folgt exakt dem "alten" Konzept. Du mußt aber beachten, daß du für $include{$FILE} manchaml "yes" und manchmal "no" erhältst  -  das hast du nämlich später nicht mehr beachtet.

Hier kommts, wenn du deine Bildschirmausgabe machst:

foreach $FILE (@FILES) {
if ($include{$FILE} eq 'yes') {
  $y++;

Das geht noch in Ordnung, das heißt, gibts den Suchbegriff, wird er auch gefunden. Aber wenig später:

if ($y==0) {
print "<b><font color=red>Leider keine Entsprechungen gefunden!

Das kann eigentlich nicht klappen, weil deine Variable $y nichts mit deinem Suchstring zu tun hat (falls ich das richtig sehe). Die ursprüngliche Konzeption sieht vor, daß hier   -    naja, gar nichts passiert. Es ist nicht vorgesehen, daß ein Suchbegriff nicht existiert.
Du mußt also irgendwo "höher" in deinem Script ansetzen, wo dein Suchstring mit dem eingegebenen Suchbegriff verglichen wird. Also ungefähr so etwas:
  if (!($string =~ /$FORM{qry2}/i))
  print "Leider keine Entsprechungen gefunden"
Oder du steckst dieses "if" noch in die darüberstehende "foreach"-Abfrage hinein.

Dein Problem könnte aber auch noch woanders liegen. Du löst am Anfang eine ganze Reihe von Suchläufen durch unterschiedliche Verzeichnisse in Arrays auf. Wenn deine Verzeichnisstruktur damit nicht mehr übereinstimmt, könnte ein ähnlicher Fehler entstehen.

Sicher bin ich mir bei diesem Deutungsversuch nicht. Aber ich hatte vor kurzer Zeit ein ganz ähnliches Problem und bin bei deutlich bescheidenerer Suchanfrage nach dieser "Logik" vorgegangen  -  das heißt, wird der vom Suchformular her übernommene Begriff im Suchstring nicht gefunden (mit dem entsprechenden RegExp.) gibts den entsprechenden Hinweis und mit exit wird das ganze Script beendet.

Grüße aus Berlin

Christoph S.