Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
perl foreach循环的帮助_Perl_Foreach - Fatal编程技术网

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();