Florian Auer: Was ist da falsch dran?

Was ist an diesem an diesem Script falsch?

#!usr/bin/perl

FAQ-Script für TiberianSun.de

Alpha-Version ohne Passwortabfrage und Fehlerbehandlung

Copyright: TiberianSun.de - Autor: Florian Auer - Kontakt: f.auer@obis.de

#     Letzte Änderung: 11.07.1999 - Version: V1.0 Alpha

Open (FAQFILE, "faq.dat");  

$FAQs = <FAQFILE>;
Close (FAQFILE);

@NonRespFAQs = Split(/Message/, $FAQs);  

print "Content-type: text/html\n\n";
  print "<FORM>";
  print "<TABLE WIDTH="100%">\n";

$i == 0;  

For (@NonRespFAQs)  
{  

$i++;
   print "<TR><TD><INPUT TYPE=radio NAME=FAQNr VALUE=", $i,"></TD>"
  print "<TD>", $NonRespFAQs[$i], "</TD></TR>";
}
  print "</TABLE>";
  print "</FORM>";

Ich erhalte ständig die Fehlermeldung 'syntax error at faq.pl line 24, near "print"
faq.pl had compilation errors.'

  1. #!usr/bin/perl

    FAQ-Script für TiberianSun.de

    Alpha-Version ohne Passwortabfrage und Fehlerbehandlung

    Copyright: TiberianSun.de - Autor: Florian Auer - Kontakt: f.auer@obis.de

    #     Letzte Änderung: 11.07.1999 - Version: V1.0 Alpha

    »»      Open (FAQFILE, "faq.dat");

    $FAQs = <FAQFILE>;

    »»      Close (FAQFILE);

    »»      @NonRespFAQs = Split(/Message/, $FAQs);

    print "Content-type: text/html\n\n";
      print "<FORM>";
      print "<TABLE WIDTH="100%">\n";

    »»      $i == 0;

    Müsste es nicht $i = 0 heißen???? (habe kein z. Zt. kein Perl auf meiner Platte)

    "==" ist doch ein Vergleichsopperator,"=" der Zuweisungsopperator

    Ob es daran lag? Keine Ahnung

    1. Nein daran lag es nicht :-(

  2. Hi.

    --------------------- schnipp -------------------------------

    print "<TR><TD><INPUT TYPE=radio NAME=FAQNr VALUE=", $i,"></TD>"
      print "<TD>", $NonRespFAQs[$i], "</TD></TR>";

    »»  }

    print "</TABLE>";
      print "</FORM>";

    --------------------- schnipp -------------------------------

    ein / ist kein druckbares Zeichen. Ersetze die Zeilen mal durch:

    print "<TR><TD><INPUT TYPE=radio NAME=FAQNr VALUE=", $i,"></TD>"
    print "<TD>", $NonRespFAQs[$i], "</TD></TR>";
      }
    print "</TABLE>";
    print "</FORM>";

    Viel Spaß noch!
       Dominique

    1. Leider gehört ein Schrägstrich in Strings nicht zu den Sonderzeichen und deshalb lag's auch nicht daran.

      MfG Florian Auer

  3. {
      $i++;
       print "<TR><TD><INPUT TYPE=radio NAME=FAQNr VALUE=", $i,"></TD>"
      print "<TD>", $NonRespFAQs[$i], "</TD></TR>";
    }

    Dürfte am fehlenden Strichpunkt (;) am Ende der (hier) dritten Zeile liegen.

    Gruß
    Julian

    1. Leider liegt es auch daran nicht: <:-(

  4. Moin,

    Was ist an diesem an diesem Script falsch?
    ...

    »»  Open (FAQFILE, "faq.dat");
    »»   $FAQs = <FAQFILE>;
    »»  Close (FAQFILE);

    ich denke, hier liegt (u.a.) das Problem. Zum Lesen öffnet man eine Datei mit...

    open (FAQFILE, "<faq.dat");

    ...zum Schreiben:

    open (FAQFILE, ">faq.dat");

    ... und andere Varianten mit '' usw.

    Viele Grüße

    Andreas

    1. Leider liegt es auch nicht da dran. :-(((............

      MfG Auer

  5. Hallo,

    In der Zeile 24 sind 2 Fehler enthalten.

    Fehler 1:
    vor alle Anführungszeichen muß ein Backslash.

    Fehler 2:
    An das Ende der Zeile gehört ein Semikolon (Strichpunkt).

    In Zeile 25 fehlen auch die Backslashs vor den anführungszeichen innerhalb des Printbefehls.

    Gruß Hansi

    1. Hallo,

      In der Zeile 24 sind 2 Fehler enthalten.

      Fehler 1:
      vor alle Anführungszeichen muß ein Backslash.

      Ist da ein Anführungszeichen das innerhalb eines String steht? Wenn ja, bekommst du einen Funfer.

      Fehler 2:
      An das Ende der Zeile gehört ein Semikolon (Strichpunkt).

      Ich weiß, aber das war's nicht.

      In Zeile 25 fehlen auch die Backslashs vor den anführungszeichen innerhalb des Printbefehls.

      s.o.

      Gruß Hansi

  6. Was ist an diesem an diesem Script falsch?

    print "<TR><TD><INPUT TYPE=radio NAME=FAQNr VALUE=", $i,"></TD>"
      print "<TD>", $NonRespFAQs[$i], "</TD></TR>";

    Ich erhalte ständig die Fehlermeldung 'syntax error at faq.pl line 24, near "print"
    faq.pl had compilation errors.'

    Jetzt mal mein Tip:

    In Perl werden Strings nicht mit Komma "," sondern mit Punkt "." verknüpft.
    Außerdem werden die Variablen bei der Benutzung von " sowieso ersetzt.
    Also:

    print "<TR><TD><INPUT TYPE=radio NAME=FAQNr VALUE=$i></TD>";
    print "<TD>$NonRespFAQs[$i]</TD></TR>";

    Das Semikolon wäre dann als nächste Fehlermeldung aufgetaucht.
    Und eigentlich sollten in HTML noch " um die Attributwerte:

    print "<TR><TD><INPUT TYPE="radio" NAME="FAQNr" VALUE="$i"></TD>";
    print "<TD>$NonRespFAQs[$i]</TD></TR>";

    Wobei ich mir da bei type="radio" auch nicht so sicher bin. Also: Ausprobieren!

    HTH
    GONZO

    1. Was ist an diesem an diesem Script falsch?

      print "<TR><TD><INPUT TYPE=radio NAME=FAQNr VALUE=", $i,"></TD>"
        print "<TD>", $NonRespFAQs[$i], "</TD></TR>";

      Ich erhalte ständig die Fehlermeldung 'syntax error at faq.pl line 24, near "print"
      faq.pl had compilation errors.'

      Jetzt mal mein Tip:

      In Perl werden Strings nicht mit Komma "," sondern mit Punkt "." verknüpft.
      Außerdem werden die Variablen bei der Benutzung von " sowieso ersetzt.

      Ich weiß, aber das hat auch nicht funktioniert.

      Also:

      print "<TR><TD><INPUT TYPE=radio NAME=FAQNr VALUE=$i></TD>";
      print "<TD>$NonRespFAQs[$i]</TD></TR>";

      Das Semikolon wäre dann als nächste Fehlermeldung aufgetaucht.

      Auch bekannt, aber das war's auch nicht

      Und eigentlich sollten in HTML noch " um die Attributwerte:

      print "<TR><TD><INPUT TYPE="radio" NAME="FAQNr" VALUE="$i"></TD>";
      print "<TD>$NonRespFAQs[$i]</TD></TR>";

      Weiß ich auch, aber das sollte ja nur zur Demonstration dienen. Leider funktionierts immer noch nicht

      Wobei ich mir da bei type="radio" auch nicht so sicher bin. Also: Ausprobieren!

      HTH
      GONZO

      MfG und danke Florian Auer

    2. Hi,

      In Perl werden Strings nicht mit Komma "," sondern mit Punkt "." verknüpft.

      nö, es geht auch mit Komma. Deine Version ist trotzdem besser :-)

      Und eigentlich sollten in HTML noch " um die Attributwerte:

      Nicht unbedingt nötig, wenn der Attributwert "literal" ist (aus Buchstaben, Ziffern, Unterstrich bestehend; mit Buchstaben beginnend). Beim value mit Variable sollte man es aber schon der Vorsicht halber immer tun :-)

      Cheatah

      1. nö, es geht auch mit Komma. Deine Version ist trotzdem besser :-)

        Extra Spezialfeature bei print oder wie?

        CYa
        G.

        1. Hi Gonzo!

          Es geht sowohl mit Punkt als auch mit Komma. Das Ergebnis ist zumindest dasselbe, in Wirklichkeit sind's aber verschiedene Dinge.

          Bei der Punkt-Version werden erst alle String-Teile zu einem einzigen String (Skalar) verknuepft und dieser dann an print uebergeben.

          Bei der Komma-Version werden die Werte einzeln an print uebergeben, als Liste naemlich. Und print printed nun mal alle Elemente einer Liste der Reihe nach, wenn es eine uebergeben bekommt. Dabei ist es egal, ob dies so
              print @liste;
          oder so
              print "Hallo", "Gonzo", ", wie", "geht's";
          oder sogar so
              print @liste1, "Skalar", @liste2, "noch'n Skalar";
          aussieht.
          Im letzten Fall werden alle Listen und Skalare als eine lange Liste interpretiert und von print dann rausgeblasen.

          Calocybe

          1. Es geht sowohl mit Punkt als auch mit Komma. Das Ergebnis ist zumindest dasselbe, in Wirklichkeit sind's aber verschiedene Dinge.

            Bei der Punkt-Version werden erst alle String-Teile zu einem einzigen String (Skalar) verknuepft und dieser dann an print uebergeben.

            Cooooool! Danke Calocybe.
            Also so wie:
            @liste = ("Element1","Element2","Und nochn Element","Bis zum letzten Element");

            CYa
            GONZO

  7. Hi allerseits,

    es gab ja jetzt eine Menge Antworten, und alle haben (neben einem vergessenen Semikolon und der eher unsinnigen Prüfung "$i == 0;") mehr oder weniger ins Blaue spekuliert. Allmählich fühle ich mich wie in einem Quiz :-)

    Wie wär's denn damit:

    »»  Open (FAQFILE, "faq.dat");
    »»  Close (FAQFILE);
    »»  For (@NonRespFAQs)

    Die drei Befehle kenne _ich_ zumindest nicht, und der Perl-Interpreter wird mir da zustimmen. Schreib's doch mal klein ;-)

    Desweiteren fällt mir auf, daß die fehlerhafte Zeile 24 anders eingerückt ist als die anderen. Ist Dir da ein unsichtbares Sonderzeichen reingerutscht? In dem Fall lösch die beiden Zeilen (ab "$i++;") einfach mal und schreibe sie per Hand neu.

    Cheatah

  8. Ich erhalte ständig die Fehlermeldung 'syntax error at faq.pl line 24, near "print"
    faq.pl had compilation errors.'

    Mich wundert, daß noch niemand versucht hat, die Zeilen zu zählen.
    Zeile 24 ist die seltsam eingerückte (mit dem fehlenden Semikolon). Ich halte Cheatahs Idee daher für sehr plausibel ...