einige fragen: AllesKlar

huhu,
ich befasse mich schon eine zeit lang mit perl aber mir sind noch einige sachen unklar und hoffe das sie mir hier jemand artgerecht beantworten kann ;-)

1. Was/Wo genau liegt der unterschied zwischen exit(0) und exit(1)? (ich weiss dass bei exit(1) das skript mit einem fehler beendet)

2. Ich lese hin und wieder das wenn man form/inputfelder mit perl auswertet bestimmte eingaben sperren sollte wie zum beispiel eine url oder -r o.ä. aber was genau muss ich sperren lassen? Gibt es da eine liste?

3. Wie gross sollte ein skript max. werden oder ist das egal/hat es nachteile? Ich habe zum beispiel ein cgi skript das inzwischen fast 200kb groß ist.

4. Warum sollte man variablen o.ä. nicht in anführungszeichen schreiben?
was ich meine ist das:
print "Hallo mein name ist $name";
es wird aber immer geraten es so zu schreiben:
print "Hallo mein name ist " . $name;

Mir fallen immer wieder fragen ein nur jetzt fäält mir keine mehr ein :-O
Ich hoffe ich darf den Thread dazu nutzen immer mal wieder eine frage zu stellen!

Schönen abend euch noch.

  1. ich befasse mich schon eine zeit lang mit perl aber mir sind noch einige sachen unklar und hoffe das sie mir hier jemand artgerecht beantworten kann ;-)

    1. Was/Wo genau liegt der unterschied zwischen exit(0) und exit(1)? (ich weiss dass bei exit(1) das skript mit einem fehler beendet)

    Falsch. Das tut es nicht.

    1. Ich lese hin und wieder das wenn man form/inputfelder mit perl auswertet bestimmte eingaben sperren sollte wie zum beispiel eine url oder -r o.ä. aber was genau muss ich sperren lassen? Gibt es da eine liste?

    Du vermittelst Geraune.
    Du sollst nicht einfach Userinput akzeptieren. Zum beispiel sollte es durch Userinput nicht möglich sein, Pfade zu setzen.
    Du willst bestimmt nicht zulassen:
    open($fh, "<", $useriput ) ...

    Nutze taint
    #!/usr/bin/perl -wT

    Dies zwingt dich, alle Useriputs durch den einzig möglichen Untaint Vorgang zu überprüfen.

    1. Wie gross sollte ein skript max. werden oder ist das egal/hat es nachteile? Ich habe zum beispiel ein cgi skript das inzwischen fast 200kb groß ist.

    Die grösse eines Skripts spielt keine Rolle. Der Speicherverbrauch und die CPU spielen eine Rolle.
    1 schlechtes 1kb Skript kann ein gutes 1MB Script in einem solchesn Kontest leicht schlagen.

    1. Warum sollte man variablen o.ä. nicht in anführungszeichen schreiben?

    Weil du dadurch von Perl zwei Oprationen verlangst, wo eine ausreicht.
    typisch ist der print Befehl. Print ist bereits ein Listenbefehl
    print "x", $var;

    was ich meine ist das:
    print "Hallo mein name ist $name";
    es wird aber immer geraten es so zu schreiben:
    print "Hallo mein name ist " . $name;

    Nein, das ist der gleiche Blödsinn: eine zusätzliche Operation. Nutze den Listenkontext von print

    print "Hallo mein name ist " , $name;

    mfg Beat;

    --
    Woran ich arbeite:
    X-Torah
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
  2. Yerf!

    1. Was/Wo genau liegt der unterschied zwischen exit(0) und exit(1)? (ich weiss dass bei exit(1) das skript mit einem fehler beendet)

    Ich kann nur zu diesem Punkt Antworten, da er unabhängig von Perl ist. Die Rückgabe eines Programms liefert einen Statuswert für den Aufrufer (z.B. die Shell). Hierbei ist es so, dass eine 0 für alles OK steht und höhere Werte für Fehler.

    Gruß,

    Harlequin

    --
    <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
    1. Ich lese hin und wieder das wenn man form/inputfelder mit perl auswertet bestimmte eingaben sperren sollte wie zum beispiel eine url oder -r o.ä. aber was genau muss ich sperren lassen? Gibt es da eine liste?

    Nein natürlich nicht.
    Der Punkt ist, du musst verhindern, dass ungeprüfter Input in kritische Operationen gelangt. Das kann alles mögliche sein, angefangen von dem open Beispiel von Beat, über mySQL Abfragen oder die Ausgabe von HTML und der Gefahr von XSS Angriffen. Und es gibt noch mehr Sachen die nicht so tragisch sein müssen, z.b. Spamabwehr oder Parameter die zu einem Skriptabbruch führen können.

    1. Wie gross sollte ein skript max. werden oder ist das egal/hat es nachteile? Ich habe zum beispiel ein cgi skript das inzwischen fast 200kb groß ist.

    Ich vermute du verwendest das CGI Modul, auch das hat diese Größe, wenn du mit Datenbanken arbeitest, wirst du das DBI Modul verwenden, dass fast 300KB gross ist und noch einige Untermodule einbindet. aber natürlich solltest du versuchen, das Skript Modular zu halten um evtl. selten benötigte Operationen auszulagern.

    1. Warum sollte man variablen o.ä. nicht in anführungszeichen schreiben?
      was ich meine ist das:
      print "Hallo mein name ist $name";
      es wird aber immer geraten es so zu schreiben:
      print "Hallo mein name ist " . $name;

    Wer sagt das man Variabeln nicht in Anführungszeichen schreiben soll?
    Es wird manchmal geraten, weil es manchmal die Lesbarkeit verschlechtert, da i.d.R. Editoren mit syntax highlighting diese Variabeln nicht hervorheben und es ist immer Unsinn sowas zu schreiben print "$var";, aber ansonsten ist es durchaus nicht ungewöhnlich eine Variabel in einem String interpolieren zu lassen. Aber da es schnell unübersichtlich wird, ist es oft sinnvoller printf zu verwenden, zumal man damit auch die Ausgabe leicht formatieren kann.

    Aber du solltest in deinem Beispiel auch keine doppelten Anführungszeichen verwenden.
    Wenn du es so schreiben willst, dann so:
    print 'Hallo mein name ist ', $name;

    Struppi.