如何在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);
..
.
}
答案 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(...);