Ich habe gerade diesen Code verwendet, um zu überprüfen, ob eine Zeichenfolge leer ist:
if ($str == "")
{
// ...
}
Und auch das gleiche mit dem nicht gleich Operator ...
if ($str != "")
{
// ...
}
Dies scheint zu funktionieren (glaube ich), aber ich bin mir nicht sicher, ob es der richtige Weg ist oder ob es unvorhergesehene Nachteile gibt. Etwas fühlt sich einfach nicht richtig an.
perl
string
comparison
Nick Bolton
quelle
quelle
Aufgrund der Art und Weise, wie Zeichenfolgen in Perl gespeichert werden, wird das Abrufen der Länge einer Zeichenfolge optimiert.
if (length $str)
ist eine gute Möglichkeit, um zu überprüfen, ob eine Zeichenfolge nicht leer ist.Wenn Sie sich in einer Situation befinden, in der Sie sich noch nicht geschützt haben
undef
, ist das Allheilmittel für "nicht leer", das nicht warntif (defined $str and length $str)
.quelle
if (length($str))
ein guter Ansatz ist und nicht fehlschlägt, wenn die Variable nicht definiert ist.Sie möchten wahrscheinlich "eq" anstelle von "==" verwenden. Wenn Sie sich über einige Randfälle Gedanken machen, möchten Sie möglicherweise auch nach undefinierten suchen:
quelle
Wie bereits von mehreren Personen erwähnt,
eq
ist hier der richtige Betreiber.Wenn Sie
use warnings;
in Ihrem Skript sind, erhalten Sie Warnungen darüber (und viele andere nützliche Dinge). Ich würde es auch empfehlenuse strict;
.quelle
use strict
aber ich aktualisiere alten Code. Wenn ich diesen hinzufüge, erhalte ich Hunderte von Fehlern. Ich werde sie wahrscheinlich eines Tages reparieren.Das Konzept einer "richtigen" Vorgehensweise, abgesehen von der Verwendung von CPAN, gibt es in Perl nicht.
Wie auch immer, das sind numerische Operatoren, die Sie verwenden sollten
oder
quelle
if ($foo == "")
beispielsweise ist definitiv falsch, es sei denn, Sie$foo
möchten tatsächlich testen, ob im numerischen Kontext ausgewertet der Wert 0 ist (in diesem Fall wäre es immer noch besser geschrieben alsif ($foo == 0)
, da dies Ihre deutlicher ausdrückt Absicht).Um nach einer leeren Zeichenfolge zu suchen, können Sie auch wie folgt vorgehen
quelle