Perl中判断变量非空:仅当$test非空时调用sendMail子程序
嘿,这个需求在Perl开发里挺常见的,我给你分享几种靠谱的实现方式,你可以根据实际场景选:
1. 最简洁的真值判断法
如果你的场景里,把undef、空字符串""、数字0、字符串"0"都视为“空/无效”值,不想调用子程序,那直接用变量的真值判断就行,写法超简单:
if ($test) { sendMail($opts, $test); }
Perl会自动把上述假值转为false,只有当$test是非假的有效值时,才会执行里面的sendMail调用。
2. 严格区分“空字符串”和“0”的场景
要是你需要把数字0或者字符串"0"也算作“非空”(比如$test是用户输入的数字0,这时候要正常发邮件),那得用更严格的判断,排除undef和空字符串:
if (defined $test && $test ne '') { sendMail($opts, $test); }
这里defined $test确保变量不是未定义的状态,$test ne ''确保它不是空字符串,这样即使$test是0或者"0",也会触发子程序调用。
3. 基于字符串长度的判断
如果$test肯定是字符串类型,也可以通过判断长度来实现:
if (length($test) > 0) { sendMail($opts, $test); }
注意:如果$test是undef,length()会返回undef,此时undef > 0会被Perl判定为false,所以这种写法同样会排除undef和空字符串,和方法2效果一致,但代码更短。
你可以根据自己的业务需求选对应的写法,一般来说方法1足够覆盖大部分日常场景啦~
内容的提问来源于stack exchange,提问作者Paul IT
相关产品推荐
相关产品推荐

