Forums Neueste Beiträge
 
Tags Keywords

    and, or, not vs. &&, ||, !

    04/11/2009 - 07:29 von Manuel Reimer | Report spam
    Hallo,

    das es verschiedene Möglichkeiten gibt, leuchtet ja noch ein. So kann
    man sich aussuchen, welche Syntax einem besser gefàllt und Perl ist ja
    dafür bekannt, dass es immer mehr als eine Möglichkeit gibt, um etwas zu
    machen.

    Komisch finde ich aber, dass die "Dinger" sich unterschiedlich
    verhalten.

    Beispiel:

    if (!-d $path && !mkdir($path)) {
    die("mkdir failed for $path");
    }

    verhàlt sich so, wie ich es erwarten würde. Perl prüft erst nach, ob das
    Verzeichnis existiert und wenn nicht, dann wird versucht es zu
    erstellen. Beides fehlgeschlagen? Dann Fehler und Ende.

    Schreibe ich das gleiche so:

    if (not -d $path && not mkdir($path)) {
    die("mkdir failed for $path");
    }

    dann bekomme ich nur noch den Fehler und es wird garkein Verzeichnis
    mehr erstellt.

    Frage also: Warum so eine Verwirrung? Wo ist der Unterschied zwischen
    der "englischen Syntax" und der Syntax mit den Sonderzeichen?

    Gleiche Kritik könnte man anbringen bei "==, !=, <, >, ..." vs. "eq, ne,
    lt, gt, ...". Hier habe ich zwar verstanden, dass erstere für Zahlen und
    letztere für Strings verwendet werden, aber der Sinn der Unterscheidung
    erschließt sich mir auch hier nicht, zumal ich von diesen
    "String-Funktionen" bisher nur "eq" und "ne" verwendet habe. Wirklich
    einen Sinn im Vergleich der "größe" eines Strings habe ich noch nie
    gesehen. Wann nutzt man sowas? Beim Basteln von Sortieralgorithmen?

    CU

    Manuel

    Alle wollen zurück zur Natur - aber keiner zu Fuß
    Der Mensch erfand Maschinen, um sich damit die Arbeit zu erleichtern.
    Nur leider hat er vergessen, rechtzeitig damit aufzuhören...
    Beitràge mit *X-No-Html Header* kann ich weder lesen, noch beantworten!
     

    Lesen sie die antworten

    #1 mlelstv
    04/11/2009 - 07:50 | Warnen spam
    Manuel Reimer writes:

    Frage also: Warum so eine Verwirrung? Wo ist der Unterschied zwischen
    der "englischen Syntax" und der Syntax mit den Sonderzeichen?



    In der Prioritàt der Operatoren. In der Regel sollte man &&,||,! innerhalb
    eines Ausdrucks verwenden und and,or,not für Statements, das spart Klammern
    und sieht auch schicker aus. Machen aber die wenigsten und fallen dann
    immer über die dann doch seltsamen Prioriàten.

    Gleiche Kritik könnte man anbringen bei "==, !=, <, >, ..." vs. "eq, ne,
    lt, gt, ...". Hier habe ich zwar verstanden, dass erstere für Zahlen und
    letztere für Strings verwendet werden, aber der Sinn der Unterscheidung
    erschließt sich mir auch hier nicht, zumal ich von diesen
    "String-Funktionen" bisher nur "eq" und "ne" verwendet habe.



    Zahlen kann man auch als Strings vergleichen und Strings als Zahlen.
    Das Ergebnis ist durchaus unterschiedlich und du musst halt irgendwie
    vorgeben, wie es gemeint ist. Das ist die Folge davon, dass Variablen
    in perl nicht wirklich einen Typ haben.

    Wirklich
    einen Sinn im Vergleich der "größe" eines Strings habe ich noch nie
    gesehen. Wann nutzt man sowas? Beim Basteln von Sortieralgorithmen?



    Es wird auch nicht die "größe" verglichen, weder Lànge noch Breite
    noch Tiefe noch literarischer Gehalt sondern, tada, die Sortierreihenfolge
    gemàß ihrer Kodierung. Und basteln muss man da nichts, ist alles
    schon eingebaut.

    Michael van Elst
    Internet:
    "A potential Snark may lurk in every tree."

    Ähnliche fragen