Bei if == nicht das Selbe wie eq
Michael
- perl
Hallo zusammen,
eigentlich sollte man in Perl
if ($NextCOMMAND eq "Write")
oder alternativ
if ($NextCOMMAND == "Write")
codieren können. "==" hat bisher immer funktioniert, aber im obigen Beispiel habe ich
if ($NextCOMMAND == "Write")
codiert gehabt. Es wurden die Befehle innerhalb die geschweiften if-Klammern immer ausgeführt, auch wenn im Scalar $NextCOMMAND etwas anderes als "Write" stand. Irgend wann habe ich dann
if ($NextCOMMAND eq "Write")
codiert, dann hat es funktionier. Kann mir dieses Phänomän jemand erklären?
Hi,
eigentlich sollte man in Perl
if ($NextCOMMAND eq "Write")
Ja
oder alternativ
if ($NextCOMMAND == "Write")
Nur wenn man einen numerischen Vergleich mit einem String für sinnvoll hält
codieren können.
"==" hat bisher immer funktioniert,
Dann hattest Du wohl bisher nur numerische Vergleiche.
aber im obigen Beispiel habe ich
if ($NextCOMMAND == "Write")
codiert gehabt. Es wurden die Befehle innerhalb die geschweiften if-Klammern immer ausgeführt, auch wenn im Scalar $NextCOMMAND etwas anderes als "Write" stand.
Wieso erwartest Du etwas anderes? == führt einen numerischen Vergleich durch.
Irgend wann habe ich dann
if ($NextCOMMAND eq "Write")
codiert, dann hat es funktionier.
Mit eq werden ja auch Strings verglichen.
cu,
Andreas
eigentlich sollte man in Perl
if ($NextCOMMAND eq "Write")
oder alternativ
if ($NextCOMMAND == "Write")
codieren können. "==" hat bisher immer funktioniert, aber im obigen Beispiel habe ich
nein, sollte man nicht, das eine ist ein Stringvergleich, dass andere ein Zahlenvergleich.
Du programmierst ohne Warnungen (vermutlich auch ohne use strict), das ist nicht empfehlenswert, da die beiden Hilfsmittel, dir viel bei der Fehlersuche helfen können.
Zur Verdeutlichung:
#! /usr/bin/perl -w
my $x = "a";
my $y = "A";
print $x == $y ? 'gleich' : 'ungleich';
print "\n";
print $x eq $y ? 'gleich' : 'ungleich';
codiert, dann hat es funktionier. Kann mir dieses Phänomän jemand erklären?
Der Zahlenvergleich wandelt den String vermutlich in eine Zahl um
Struppi.