我有以下代码,唯一的问题是,当代码到达嵌套while循环时,它跳过它,我假设条件没有被满足,但任何人都可以看到我的东西做错了?我已经证实,我给脚本的所有标志都是正确的,并且job_name是我认为应该是的。嵌套while循环不执行
open $alOut,
"/home/usr/bin/test.pl -j EW-% -j RA-% -l 0 | grep `date \"+%m/%d/%Y\"` | sort -k 3,3|";
while (<$alOut>) {
chomp;
my ($job_name, $date, $start_time, $end_time, $duration,
$state, $return, $expected_end_time) = split(/\s+/, $_);
# Go to next iteration if jobname is EW-INTERNAL-AUTOSYS,
# EW-INTERNAL-DB-LONGQUERY-ALERT, EW-INTERNAL-DB-LONGQUERY-ALERT,
# EW-CIIM-ADJ-TRIGGER, or EW-S140-ADJ-TRIGGER
if (($job_name eq "EW-INTERNAL-AUTOSYS") ||
($job_name eq "EW-INTERNAL-DB-LONGQUERY-ALERT") ||
($job_name eq "EW-INTERNAL-SYSUP") ||
($job_name eq "EW-CIIM-ADJ-TRIGGER") ||
($job_name eq "EW-S140-ADJ-TRIGGER"))
{
next;
}
#Expected Start Time
open $alOut2,
"/home/usr/bin/test.pl -j $job_name -q -l 0 | grep -E `condition:|start_times:`";
while (<$alOut2>) { .... }
}
您应该测试打开时是否有错误。 – Toto 2011-04-20 17:59:47
你可能想在这里使用'while(defined(my $ line1 = <$alOut>))'和'while(defined(my $ line2 = <$alOut2>))',否则你会用'$ _'来处理两个不同的事情相同的范围,并可能迟早会引起混淆。 – 2011-04-20 18:11:18
您的代码中的第一条评论是“如何不评论代码”的经典示例。 – Svante 2011-04-20 20:46:18