Mein Skript funktioniert nicht
Inhalt:
Problem
Du hast ein Skript (selbst geschrieben, oder kopiert, oder es handelt sich vielleicht
auch um code aus dem Forum), das "nicht funktioniert". Nun ist es so, dass diese Beschreibung
so gut wie keine ist.
Man stelle sich folgendes vor: Autoreparatur per Ferndiagnose:
Du: Bei meinem Auto geht die Heizung nicht.
Werkstatt: Dann füllen Sie mal Kühlwasser nach.
Du: Ok, aber es geht immer noch nicht.
Was erwartest du für eine Antwort? Ich würde keine Antwort erwarten; entweder
fragt Dich die Werkstatt nun weiter und weiter, oder sie sagt, die Heizung ist
kaputt und das Auto muss in die Werkstatt gebracht werden.
Hättest du aber stattdessen gesagt:
"Ok, ich habe ein Auto der Marke soundso, und ich habe Kühlwasser in den
Behälter links (Fahrerseite) geschüttet, bis er voll war."
Dann hätte Dir die Werkstatt vielleicht sagen können:
"Tja, das war keine so gute Idee, denn der Kühlwasserbehälter ist auf der
anderen Seite, und das, was Sie gerade aufgefüllt haben, war die
Scheibenwaschanlage."
Das läßt darauf schließen, dass du am besten gleich nachgefragt hättest,
wo der Kühlwasserbehälter ist. Dann hättest Du (sehr wahrscheinlich) wieder
eine funktionierende Heizung.
Genauso verhält es sich mit Fragen im Forum:
Beispiel
Du hast ein Skript, das nicht tut, wie es soll. Erster Schritt:
Versuche es so zu kürzen, bis es den Fehler reproduziert, aber kurz
genug ist, um im Forum gepostet werden zu können.
Poste das Skript (mit code-tags!), Input und Output.
Anstatt:
also, $input enthält sowas wie
123 bla
456 blabla
das ist der code:
#code
und heraus kommt irgendeine fehlermeldung mit uninitialized oder so...
wollen wir sowas sehn:
"Meine Perl-Version ist 5.8.7, Betriebssystem linux" *
# ohne strict und warnings geht nix! =)
use strict;
use warnings;
my $input = "123\tbla\n456\tblabla";
# hier steht der code, der "nicht funktioniert"
tuwas($input);
Output:
# hier sollte der Output stehen, den du per copy- und paste einfügen solltest
Use of uninitialized value in print at skript.pl line 42
Damit kann man dann was anfangen.
Mit Skript-Teilen, bei denen man nur vermuten kann, was in den Variablen steht,
kann man in der Regel wenig anfangen. Oft "funktioniert" ein Skript deswegen nicht,
weil in den Variablen einfach was anderes drinsteht als Du vermutest.
Indem Du Dein Skript so wie oben beschrieben verkürzt und fragliche Variablen
von Hand setzt (anstatt z.B. aus CGI-Parametern), kannst du vielleicht
den Fehler selbst verschwinden lassen. Dann weisst du, dass es einfach nur
am falschen Inhalt der Variablen liegt und nicht am Code. Wenn Du Glück hast,
findest du den Fehler so selbst und brauchst gar nicht zu fragen.
*) `perl -v`, `uname -a` oder sonstiges
Ergänzungen, Kommentare
Kommentare werden am besten in folgender Form vorgenommen, damit
sie im Inhaltsverzeichnis angezeigt werden (natürlich ohne das <verbatim>):
---+++ Main.??? - 14 Jul 2003 - Betreff