perl foreach循环的帮助
我需要帮助,找出在哪里打电话给我的perl foreach循环的帮助,perl,foreach,Perl,Foreach,我需要帮助,找出在哪里打电话给我的send\u mail()。我现在把它放在代码中,它会针对每个条件发送一封电子邮件,并且它发送的每封电子邮件都会添加另一条记录作为集合的一部分。我只对发送一封包含收集记录的电子邮件感兴趣,最后一封显示的电子邮件(msg4)。我可以在同一个循环中执行此操作吗?我不确定 例如: (msg1) (msg2): (msg3): (msg4):(只对这封邮件感兴趣) 这里是我设置条件的主要部分: (我使用的是Win32::OLE包在(集合)中有一个方法。因此它不是数组引用
send\u mail()
。我现在把它放在代码中,它会针对每个条件发送一封电子邮件,并且它发送的每封电子邮件都会添加另一条记录作为集合的一部分。我只对发送一封包含收集记录的电子邮件感兴趣,最后一封显示的电子邮件(msg4)。我可以在同一个循环中执行此操作吗?我不确定
例如:
(msg1)
(msg2):
(msg3):
(msg4):(只对这封邮件感兴趣)
这里是我设置条件的主要部分:
(我使用的是Win32::OLE包在(集合)中有一个方法。因此它不是数组引用。)
将发送电子邮件呼叫移出循环,否则它将在每次通过循环时呼叫。我假设函数只发送$winsvcs的内容
my $winsvcs = '';
foreach my $serv (in $servSet) {
next if $serv->{started};
my $sname = $serv->{name};
my $sstate = $serv->{started};
my $ssmode = $serv->{startmode};
$winsvcs .= "Service: $sname - $servicestate[$sstate] - $ssmode\n";
}
send_email();
谢谢你澄清这一点。现在工作正常了。如果我只想过滤特定服务上的输出,该怎么办?例如,只对
引擎|日志记录|服务器
感兴趣。我会用正则表达式来做这个吗?再次感谢。您可以通过添加另一行“下一行”来过滤它。例如,如果你想过滤掉“Logging”,你可以在一整天的测试之后添加“next if$sname eq‘Logging’”(基本上,$winsvcs
没有REC,它发送的电子邮件当然是一个空的/没有mesg正文。我如何更改它,如果没有正文或$winsvcs
是空的,不要调用send_email?如果没有要报告的内容,我不希望收到电子邮件。再次感谢($winsvcs){send_email()}
Service: MST Engine - Stopped - Manual
Service: MST Logging - Stopped - Manual
Service: MST Engine - Stopped - Manual
Service: MST Logging - Stopped - Manual
Service: MST Server - Stopped - Manual
Service: MST Engine - Stopped - Manual
Service: MST Logging - Stopped - Manual
Service: MST Server - Stopped - Manual
Service: MST Formatter - Stopped - Manual
foreach my $serv (in $servSet)
{
next if $serv->{started};
my $sname = $serv->{name};
my $sstate = $serv->{started};
my $ssmode = $serv->{startmode};
$winsvcs .= "Service: $sname - $servicestate[$sstate] - $ssmode\n";
send_email();
}
my $winsvcs = '';
foreach my $serv (in $servSet) {
next if $serv->{started};
my $sname = $serv->{name};
my $sstate = $serv->{started};
my $ssmode = $serv->{startmode};
$winsvcs .= "Service: $sname - $servicestate[$sstate] - $ssmode\n";
}
send_email();