我刚刚用这段代码检查了一个字符串是否为空:
if ($str == "") { // ... }
不等于运算符也是一样...
if ($str != "") { // ... }
这看起来很有效(我认为),但我不确定这是不是正确的方法,或者是否有任何不可预见的缺点。
dzhpxtsq1#
对于Perl中的字符串比较,请使用eq或ne:
eq
ne
if ($str eq "") { // ... }
==和!=运算符是 numeric 比较运算符。它们会尝试在比较两个操作数之前将它们转换为整数。有关更多信息,请参考perlop手册页.
==
!=
iyfjxgzm2#
1.由于Perl中字符串的存储方式,获取字符串长度的过程得到了优化。if (length $str)是检查字符串是否为非空的好方法。1.如果你还没有防范undef,那么if (defined $str and length $str)就是一个“非空”的陷阱,不会发出警告。
if (length $str)
undef
if (defined $str and length $str)
dauxcl2d3#
您可能希望使用“eq”而不是“=="。如果您担心某些边缘情况,您可能还希望检查未定义的:
if (not defined $str) { # this variable is undefined }
fumotvh34#
正如已经提到的一些人,eq是这里正确的运算符。如果你在脚本中使用use warnings;,你会得到关于这个的警告(以及其他很多有用的东西);我也推荐use strict;。
use warnings;
use strict;
jv4diomz5#
除了使用CPAN之外,Perl中不存在“适当”的方式来做任何事情的概念。无论如何,这些都是数字运算符,您应该使用
if($foo eq "")
或
if(length($foo) == 0)
eni9jsuy6#
要检查空字符串,还可以执行以下操作
if (!defined $val || $val eq '') { # empty }
oxiaedzo7#
剩下的答案让事情复杂化了。如果填充:
if ($var) { }
如果未填写:
if (! $var) { }
7条答案
按热度按时间dzhpxtsq1#
对于Perl中的字符串比较,请使用
eq
或ne
:==
和!=
运算符是 numeric 比较运算符。它们会尝试在比较两个操作数之前将它们转换为整数。有关更多信息,请参考perlop手册页.
iyfjxgzm2#
1.由于Perl中字符串的存储方式,获取字符串长度的过程得到了优化。
if (length $str)
是检查字符串是否为非空的好方法。1.如果你还没有防范
undef
,那么if (defined $str and length $str)
就是一个“非空”的陷阱,不会发出警告。dauxcl2d3#
您可能希望使用“eq”而不是“=="。如果您担心某些边缘情况,您可能还希望检查未定义的:
fumotvh34#
正如已经提到的一些人,
eq
是这里正确的运算符。如果你在脚本中使用
use warnings;
,你会得到关于这个的警告(以及其他很多有用的东西);我也推荐use strict;
。jv4diomz5#
除了使用CPAN之外,Perl中不存在“适当”的方式来做任何事情的概念。
无论如何,这些都是数字运算符,您应该使用
或
eni9jsuy6#
要检查空字符串,还可以执行以下操作
oxiaedzo7#
剩下的答案让事情复杂化了。
如果填充:
如果未填写: