Was ist da falsch dran?
    
Florian Auer
    
    
      
    
  - perl
 
0 Oliver Lehmann0 Dominique Stender0 Julian Hofmann0 Andreas Bierhals0 Hansi0 GONZO0 Florian Auer0 Cheatah
0 Cheatah0 Michael Schröpl
Was ist an diesem an diesem Script falsch?
#!usr/bin/perl
# 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.'
#!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
Nein daran lag es nicht :-(
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
Leider gehört ein Schrägstrich in Strings nicht zu den Sonderzeichen und deshalb lag's auch nicht daran.
MfG Florian Auer
{
  $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
Leider liegt es auch daran nicht: <:-(
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
Leider liegt es auch nicht da dran. :-(((............
MfG Auer
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
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
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
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
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
nö, es geht auch mit Komma. Deine Version ist trotzdem besser :-)
Extra Spezialfeature bei print oder wie?
CYa
G.
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
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
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
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 ...