如何在Perl中检查空标量?

时间:2011-08-05 19:52:42

标签: perl

如何在perl中检查空标量?如果我没有$list,我不想发送电子邮件。

我可以在send_email例程中检查空消息还是在外面执行此操作?

我的查询使用Win32::OLE

my $servSet = $wmiObj->ExecQuery("SELECT * FROM Win32_Service WHERE DisplayName LIKE 'ServiceNameHere%'", "WQL",  wbemFlagReturnImmediately | wbemFlagForwardOnly);

我在这里循环并构建列表$list

foreach my $serv (in $servSet) {
    next if $serv->{started}; 
    my $sname  = $serv->{name};
    my $sstate = $serv->{started};
    my $ssmode = $serv->{startmode};
    $list .= "Service: $sname  - $sstate - $ssmode\n";  
 }

我使用$ list作为电子邮件正文发送:

sub send_email {
...
..
$smtp->datasend($list);
..
.                        
}

3 个答案:

答案 0 :(得分:10)

在Perl中,undef""(以及0"0")评估为“false”。所以你可以做一个布尔测试:

send_email() if $list;

答案 1 :(得分:8)

我不喜欢愚弄变量中的实际内容。如果我想查看是否有任何东西,任何东西都在标量中,我会查看它的长度:

 send_mail() if length $scalar;

答案 2 :(得分:0)

你试过这个吗?

 if (!($list eq ""))
     send_email(...);

 if ($list ne "")
     send_email(...);