Hallo,
ABER: In jeder mir bekannten Programmiersprache gibt es die Schlüsselwörter true und false.
Dann dürfte Dir Perl nicht bekannt sein, weil da gibts (noch) kein true oder false;-)
Und die schreibt man da genauso hin, wie ein if, ein while oder ein return. Und wenn die Methode wanted(String) einen boolschen Wert zurückgibt, dann kann ich doch bestimmt auch in Perl so vergleichen können:
if (wanted('what ever you think is wanted') == true)
eigentlich
if (wanted('what ever you think is wanted'))
wenn Du das logische True erwartest bzw.
unless (wanted('what ever you think is wanted'))
wenn Du das logische False erwartest.
Oder gibts in PERL kein '=='?
Sicherlich, aber nur wenn Du numerische Gleichheit prüfen willst.
Logishc True ist alles was nicht ein leerer String, der Wert 0 oder undefiniert ist.
oben kommt _immer_ wahr raus, weil 'hhh' == 'bbb' (weil 0 == 0).
In welcher Sprache ist das so?
In Perl, da == ja numerishc vergleicht und 'hhh' nach der Umwandlung in eine Zahl 0 ergibt, genauso wie 'aaa'. Anders verhält sich '123abc'. Wenn Du diesen String als Zahl interpretierst, dann funktioniert das zwar, aber nicht ohne Warnung, wenn deren Ausgabe aktibiert ist.
('abc' == 'abc') ist false, weil die Zeiger der Texte auf verschiedene Adressen zeigen - is aber nur in C/C++ so schlimm.
'abc' würde in C zu einem Compilerfehler führen, da Singlequotes für Charakterkonstanten verwendet wird, während Doublequotes für Stringkonstanten eingesetzt werden.
Allerdings ist das Ergebnis von ("abc" == "abc") in C undefiniert, da, bei entsprechenden Compileroptionen beide Stringkonstanten durchaus auch zusammengefaßt werden könnten.
Deshalb gibt es dort einen speziellen Stringvergleich: (strcmp('abc','abc')==0)
das erledigt in Perl normalerweise ('abc' eq 'abc').
Allerdings könntest Du auch hergehen, und die Operatoren überladen, was aber dann sicherlich zu einiger Verwirrung führen könnte.
In Scriptsprachen funktionieren aber im allgemeinen direkte Stringvergleiche, wie:
('abc'=='abc') ist true und
('bbb'=='hhh') ist false
Wie Du schon sagst, 'im Allgemeinen';-)
Grüße
Klaus