Fehler bei 'PRINT <<XXX;'
Poldi
- perl
Schönen Abend,
In meinem Perl-Script wird der folgende Befehl moniert
print <<XXX;
und zwar mit der Meldung:
[Fri Jun 16 21:31:45 2006] [error] [client 127.0.0.1] [Fri Jun 16 21:31:45 2006] kontakt.pl: Use of uninitialized value in concatenation (.) or string at C:/apachefriends/xampp/htdocs/cgi-bin/kontakt.pl line 388., referer: http://localhost/tests/testform.htm
(Die Zeile 388 weist eindeutig auf dieses Statement)
Was könnte das bedeuten ?
hallo,
In meinem Perl-Script wird der folgende Befehl moniert
print <<XXX;
Schreibe die Zeile so:
print << "XXX";
Grüße aus Berlin
Christoph S.
Hallo,
Schreibe die Zeile so:
print << "XXX";
Ich glaube nicht, dass es damit etwas zu tun hat.
Ich persönlich bevorzuge ohnehin print q~ ...~; für simplen Text und print qq~.....~; für Text in dem Variablen geparst werden sollen, aber das tut jetzt nichts zur Sache.
[Fri Jun 16 21:31:45 2006] [error] [client 127.0.0.1] [Fri Jun 16 21:31:45 2006] kontakt.pl: Use of uninitialized value in concatenation (.) or string at C:/apachefriends/xampp/htdocs/cgi-bin/kontakt.pl line 388., referer: http://localhost/tests/testform.htm
In diesen Fällem hilft die Zeilennummer nicht wirklich etwas. Derartige Fehler sind nur sehr schwer zu finden. Es könnte sein, dass der Fehler viel weiter "oben" entsteht. Eine Möglichkeit wäre, nach jedem Aufruf des CGI-Scripts nachzusehen, ob der Fehler gerade entstanden ist oder nicht, um den Bereich eingrenzen zu können.
Oft werden bei dieser Art von Fehler zu wenige Variablen an eine Funktion übergeben, obwohl die Funktion mehrere als übergeben erwartet.
Markus.
Hallo,
Danke für die Tips.
Es war tatsächlich ein Feld undefiniert.
Allerdings war es sehr mühsam bei 500 Zeilen vor dem 'PRINT <<XXX' die richtige Stelle zu finden.
Schade, dass es da keine genaueren Fehlerhinweise gibt.
Hi,
kommt auf Editor, bzw. IDE an. In Eclipse z.B. gibt es genaue Fehlerhinweise zu solchen Fehlern schon während der Eingabe des Quellcodes. Damit wird das Coding wesentlich produktiver.
MfG
Danny
kommt auf Editor, bzw. IDE an. In Eclipse z.B. gibt es genaue Fehlerhinweise zu solchen Fehlern schon während der Eingabe des Quellcodes. Damit wird das Coding wesentlich produktiver.
Woher weiß denn Eclipse das eine Variabel zur Laufzeit undefiniert sein wird?
Kann es hellsehen?
Struppi.
Woher weiß denn Eclipse das eine Variabel zur Laufzeit undefiniert sein wird?
Kann es hellsehen?
Eine lauffähige Perl-Umgebung kann in Eclipse eingebunden werden (Parser arbeitet permanent im Hintergrund) und somit z.B. undef. Var erkennen. Diese werden dann entspr. im Code markiert. Beim überfahren mit der Maus erscheinen ggf. Perl-interne Warnung oder Fehler.
MfG
Woher weiß denn Eclipse das eine Variabel zur Laufzeit undefiniert sein wird?
Kann es hellsehen?Eine lauffähige Perl-Umgebung kann in Eclipse eingebunden werden (Parser arbeitet permanent im Hintergrund) und somit z.B. undef. Var erkennen. Diese werden dann entspr. im Code markiert. Beim überfahren mit der Maus erscheinen ggf. Perl-interne Warnung oder Fehler.
In der Theorie mag das stimmen, aber ich arbeite z.b. überwiegend an CGI Anwendungen, woher weiß Eclipse dass ein Parameter nicht übergeben wurde?
Aber auch bei z.b. Tk Anwendungen, woher kann eine Umgebung Wissen dass eine Eingabe agebrochen wurde?
undefinierte Werte treten ja vor allem bei Nutzereingaben auf.
Struppi.
Verstehe... In diesen Fällen muß man wohl auf altbewährte Debugging, bzw. QS-Mittel zurückgreifen und Testcode schreiben, der versch. Eingaben simuliert.
Gruß
hallo,
Schreibe die Zeile so:
print << "XXX";
Hat leider nichts bewirkt.
Gruß Poldi
hi,
Schreibe die Zeile so:
print << "XXX";
Hat leider nichts bewirkt.
Dann mußt du deinen Code mal herzeigen. Tatsächlich kann der Fehler schon deutlich vor dieser Zeile liegen.
Grüße aus Berlin
Christoph S.
你好 Poldi,
Was könnte das bedeuten ?
Um das beurteilen zu können, brauchen wir mehr Code.
再见,
克里斯蒂安
print <<XXX;
und zwar mit der Meldung:
[Fri Jun 16 21:31:45 2006] [error] [client 127.0.0.1] [Fri Jun 16 21:31:45 2006] kontakt.pl: Use of uninitialized value in concatenation (.) or string at C:/apachefriends/xampp/htdocs/cgi-bin/kontakt.pl line 388., referer: http://localhost/tests/testform.htm
(Die Zeile 388 weist eindeutig auf dieses Statement)
Du hast irgendwo in deinem XXX Textblock eine Variabel stehen die nicht mit einem Wert belegt wurde.
also sowas:
#!/usr/bin/perl -w
use strict;
my $string;
print <<XXX;
mein: $string
XXX
Struppi.