假设它是:
...
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
标记的声明?
答案 0 :(得分:4)
不,如果$str
是"0"
,则它们不一样。
您只需检查长度即可简化声明:
if (length $str) { ...
在最新版本的Perl中,length(undef)
为undef
,未生成任何警告。使用undef
作为布尔值也不会生成警告。
(“最近”我的意思是5.12 and up。之前,length(undef)
会产生“长度使用未初始化的值”,如果您已启用警告,则应该这样做。)
答案 1 :(得分:3)
没有。对于初学者来说,$str=0;
和$str="0";
会有所不同。
也许。取决于$str
可以具有的值,您要检查的内容以及您要支持的Perl版本。可能性:
if ($str)
if (length($str))
if (defined($str))