在Perl中检查string是否为空的正确方法是什么?
我刚刚使用这个代码来检查一个string是否为空:
if ($str == "") { // ... } 和不等于运算符一样…
 if ($str != "") { // ... } 
这似乎工作(我认为),但我不知道这是正确的方式,或者如果有任何不可预知的缺点。 有些事情对此感觉不对。
 要在Perl中进行string比较,请使用eq或ne : 
 if ($str eq "") { // ... } 
  ==和!=运算符是数字比较运算符。 他们将尝试将两个操作数转换为整数,然后再比较它们。 
有关更多信息,请参阅perlop手册页。
- 
由于string存储在Perl中的方式,获取string的长度是优化的。 
 if (length $str)是一个检查string是否为空的好方法。
- 
如果你还没有防范 undef,那么不会警告的“非空”的if (defined $str and length $str)-catchif (defined $str and length $str)。
 正如几个人已经提到的那样, eq在这里是正确的运营商。 
 如果您use warnings; 在你的脚本中,你会得到关于这个(和许多其他有用的东西)的警告。 我build议use strict; 以及。 
您可能要使用“eq”而不是“==”。 如果你担心一些边缘情况,你可能还想检查未定义的:
 if (not defined $str) { # this variable is undefined } 
除了使用CPAN之外,“正确”做任何事情的概念在Perl中都是不存在的。
反正那些是数字运算符,你应该使用
 if($foo eq "") 
要么
 if(length($foo) == 0) 
要检查一个空string,你也可以按如下方式做一些事情
 if (!defined $val || $val eq '') { # empty }