在Perl中,我的脚本的开始时间总是一样的
我制作了一个脚本来提取日志文件的内容,并在任务完成时计算时间差 假设我有四个作业,每个作业有三个单独的任务,到目前为止,我需要每个任务的开始,然后打印出来 一切都很好,除了我尝试使用在Perl中,我的脚本的开始时间总是一样的,perl,Perl,我制作了一个脚本来提取日志文件的内容,并在任务完成时计算时间差 假设我有四个作业,每个作业有三个单独的任务,到目前为止,我需要每个任务的开始,然后打印出来 一切都很好,除了我尝试使用$j,$l作为二维数组进行初始化以使其更方便外 问题在于,在输出端,我得到的每个作业的“起始点”都是相同的 $counter和$l的值应该是根本原因 有人能帮忙吗?我尽了最大努力,还是个新手 sub getdate { my $line = $_[0]; ($hrs, $min) = split('
$j
,$l
作为二维数组进行初始化以使其更方便外
问题在于,在输出端,我得到的每个作业的“起始点”都是相同的
$counter
和$l
的值应该是根本原因
有人能帮忙吗?我尽了最大努力,还是个新手
sub getdate {
my $line = $_[0];
($hrs, $min) = split(':', $line, 3);
return $hrs, $min;
}
print FILE "<html><head>\n";
print FILE "<title>CGI Test</title>\n";
print FILE "</head>\n";
print FILE "<body>";
print FILE "<font size=\"5\" color=\"#008080\" face=\"Tahoma\"><b><u><br>";
print FILE "PBI Batch for 22/02/2013";
print FILE "</font></b></u><br><br><br>";
my $i = 0;
my $j = 0;
my $l = 0;
my @sample;
#print FILE "<h4>";
foreach $header (<COLLECTION>) {
chomp($header);
($heading, $filepath) = split(',', $header);
#$two[$i]="<font size=\"3\"color=\"#008000\" face=\"Tahoma\"><b><u><br>";
#$two[$i]="<font size=\"3\" color=".$color." face=\"Tahoma\"><b><u><br>";
$two[$i] .= $heading;
#$two[$i] .= "</font></u></b><br>";
#print FILE "<font size=\"3\" color=\"#008000\" face=\"Tahoma\"><b><u><br>";
# print FILE $two[$i];
#print FILE $heading;
#print FILE "</font></u></b><br>";
#print $filepath."\n";
open(MYFILE1, $filepath) or die 'Could nont openfile';
my $counter;
foreach $list (<MYFILE1>) {
chomp($list);
($file, $path) = split(',', $list);
#print FILE $file;
my @secondstart;
my @secondend;
my $secondcounter = 0;
#print FILE "valueofllllllllllllllllllllllllllll".$l;
foreach $counter ($file) {
print FILE "valueofllllllllllllllllllllllllllll" . $l;
$l++;
$sample[$j][$l] = $counter;
print FILE "secCOUNTER " . $secondcounter;
$secondcounter++;
}
print FILE " space";
open(MYFILE, $path) or die 'ERRROR';
my $count = 0;
foreach $line (<MYFILE>) {
my @endtime;
$flag = 'false';
#$counter++;
$count++;
print FILE $count . "========";
if ($count == 1) {
($hrs, $min) = getdate($line);
$starttime[$j][$l] = ($hrs * 60) + $min;
}
else {
($hrs, $min) = split(':', $line, 3);
if ($line =~ m/End of Procedure/) {
$flag = 'true';
$endtime[$j][$l] = $hrs . $min;
$endtime[$j][$l] = ($hrs * 60) + $min;
}
else {
$endtime[$j][$l] = ($hrs * 60) + $min;
}
}
$duration[$j][$l] = $endtime[$j][$l] - $starttime[$j][$l];
}
# print $flag;
#print FILE $file." : ";
#print FILE "value of ".$j."and".$l;
$startstatus[$j][$l] = "Started at" . $starttime[$j][$l];
$durationstatus[$j][$l] = " Duration is " . $duration[$j][$l] . "m";
# print FILE "Started at".$starttime;
# print FILE " Duration is ".$duration."m";
# print FILE "<br>";
close(MYFILE);
}
my $valueofl = $l;
#print FILE "vlaeeofl".$valueofl;
print "valueofllllllllllllllllllllllllllll" . $l;
$l = 0;
if ($flag eq 'true') {
$status = 'Completed';
$color = '#008000';
print FILE "<font size=\"3\" color="
. $color
. " face=\"Tahoma\"><b><u><br>"
. $two[$i]
. "</font></u></b><br>";
print FILE $status . "<br>";
while ($l <= $valueofl) {
#print $j."and".$l;
# print "valueofllllllllllllllllllllllllllll".$l;
print FILE $sample[$j][$l] . "    ";
print FILE $startstatus[$j][$l] . "    ";
print FILE $durationstatus[$j][$l] . "<br>";
$l++;
}
# print FILE $startstatus[$j][0];
# print FILE $durationstatus[$j][0];
}
else {
#print "valueofllllllllllllllllllllllllllll".$l;
#print $j."and".$l;
$status = 'In Progress';
$color = 'blue';
print FILE "<font size=\"3\" color="
. $color
. " face=\"Tahoma\"><b><u><br>"
. $two[$i]
. "</font></u></b><br>"
. $status;
}
$i++;
$j++;
}
print FILE "</body>";
print FILE "</html>";
close(FILE);
close(MYFILE1)
sub-getdate{
我的$line=$\u0];
($hrs,$min)=拆分(“:”,$line,3);
返回$hrs,$min;
}
打印文件“\n”;
打印文件“CGI测试\n”;
打印文件“\n”;
打印文件“”;
打印文件“
”;
打印文件“2013年2月22日PBI批次”;
打印文件“
”;
我的$i=0;
我的$j=0;
我的$l=0;
我的@样本;
#打印文件“”;
foreach$header(){
chomp($header);
($heading,$filepath)=拆分(',',$header);
#$two[$i]=“
”;
#$two[$i]=“
”;
$two[$i]。=$heading;
#$two[$i]。=“
”;
#打印文件“
”;
#打印文件$two[$i];
#打印文件$heading;
#打印文件“
”;
#打印$filepath。“\n”;
打开(MYFILE1,$filepath)或死“可以不使用openfile”;
我的美元柜台;
foreach$list(){
chomp($list);
($file,$path)=拆分(',',$list);
#打印文件$FILE;
我的@secondstart;
我的@secondend;
我的$secondcounter=0;
#打印文件“valueofllllllllllll”。$l;
foreach$计数器($文件){
打印文件“valueofllllllllllll”。$l;
$l++;
$sample[$j][$l]=$counter;
打印文件“secCOUNTER”。$secondcounter;
$secondcounter++;
}
打印文件“空间”;
打开(MYFILE,$path)或死“error”;
我的$count=0;
foreach$行(){
我的@endtime;
$flag='false';
#$counter++;
$count++;
打印文件$count。“=============”;
如果($count==1){
($hrs,$min)=获取日期($line);
$starttime[$j][$l]=($hrs*60)+$min;
}
否则{
($hrs,$min)=拆分(“:”,$line,3);
如果($line=~m/过程结束/){
$flag='true';
$endtime[$j][$l]=$hrs.$min;
$endtime[$j][$l]=($hrs*60)+$min;
}
否则{
$endtime[$j][$l]=($hrs*60)+$min;
}
}
$duration[$j][$l]=$endtime[$j][$l]-$starttime[$j][$l];
}
#打印$flag;
#打印文件$FILE。“:”;
#打印文件“..j.”和“..l”的值;
$startstatus[$j][$l]=“开始于”$starttime[$j][$l];
$durationstatus[$j][$l]=“ 持续时间为“$duration[$j][$l].”m”;
#打印文件“开始于”。$starttime;
#打印文件“ Duration为“$duration.”m”;
#打印文件“
”;
关闭(MYFILE);
}
my$valueofl=$l;
#打印文件“vlaeeofl”。$valueofl;
打印“valueoflllllllllllllllllllllllllllllll”。$l;
$l=0;
如果($flag eq'true'){
$status='已完成';
$color='008000';
打印文件“
”
.$2[$i]
.“
”;
打印文件$status。“
”;
虽然($l这是一段令人震惊的Perl代码。您必须始终使用使用严格的和使用警告,并使用my
声明所有变量,使其尽可能接近其第一个使用点。这是最基本的调试形式,在询问其他人之前至少这样做是礼貌的我需要帮助
问题可能出在您的for
语句中
foreach $counter ($file) { ... }
它将只执行一次循环体,并将$content
设置为$file
的值。我无法想象您的意图是什么。这是一段令人震惊的Perl代码。您必须始终使用使用strict
和使用warnings
启动程序,并将所有变量声明为尽可能接近ir使用my
的第一个使用点。这是最基本的调试形式,在请求他人帮助之前,至少这样做是礼貌的
问题可能出在您的for
语句中
foreach $counter ($file) { ... }
它将只执行一次循环体,并将$content
设置为$file
的值。我无法想象您的意图是什么。您应该减少代码,使其构成仍然显示您的问题的尽可能小的示例。您应该减少代码,使其构成最小的可能性仍然显示您的问题的ble示例。$content
别名为$file
别名为$content
别名为$file