if-statement condtion减少

时间:2014-02-14 16:32:38

标签: perl if-statement conditional

假设它是:

...
use Config::Properties::Simple;
...
my $p = Config::Properties::Simple->new( file => $propfile );
...
$str = $p->getProperty('prop');
...

确实

 ...
if ( defined $str and $str ne "" ) { #1
 ...

等于

...
if ($str) { #2
...

如果没有,有没有办法简化#1标记的声明?

2 个答案:

答案 0 :(得分:4)

不,如果$str"0",则它们不一样。

您只需检查长度即可简化声明:

if (length $str) { ...

在最新版本的Perl中,length(undef)undef,未生成任何警告。使用undef作为布尔值也不会生成警告。

(“最近”我的意思是5.12 and up。之前,length(undef)会产生“长度使用未初始化的值”,如果您已启用警告,则应该这样做。)

答案 1 :(得分:3)

  1. 没有。对于初学者来说,$str=0;$str="0";会有所不同。

  2. 也许。取决于$str可以具有的值,您要检查的内容以及您要支持的Perl版本。可能性:

    • if ($str)
    • if (length($str))
    • if (defined($str))