我的脚本中有两个由$outputfile6
和$outputfile7
表示的文件。两个文件具有相同的内容(所有字段都相同),并且在此方案中总共有10个字段。虽然两个文件都是相同的,但我没有在文件中获取任何内容:$outputfile2
。以下是代码。
open my $outputfile2, ">", "hung_jobs.txt" or die $!;
open my $outputfile6, "<", "active_jobs_all_fields.txt" or die $!;
open my $outputfile7, "<", "hung_jobs_old.txt" or die $!;
my @arr = <$outputfile6>;
my @arr1 = <$outputfile7>;
foreach my $line2 (@arr) {
chomp $line2;
my @split = split( ' ', $line2 );
foreach my $line3 (@arr1) {
chomp $line3;
my @split1 = split( ' ', $line3 );
if ( $split[9] == $split1[9] ) {
print $outputfile2 "Hello";
print $outputfile2 "$split[0] $split[3] $split[5] $split[6] \n";
}
print $outputfile5 $outputfile2;
}
}
答案 0 :(得分:2)
你没有足够的证据证明你的问题,所以我不确定问题是什么。
但我想指出这种方法很糟糕。如果两个文件中都有1,000行,那么您最终将执行循环体1,000,000次。在同一场景中,以下仅执行每个循环体1000次:
temp = 0 # temperature
valve = 0 #control temperature
while True :
if temp = 30
valve =+ 20
print "temp now 30 and valve 20"
elif temp = 40
valve =+ 40
print "temp now 40 and valve 40"
else
print "temp n and valve n"
time.sleep(5) #looping 5 second not happen i get error
答案 1 :(得分:-1)
目前尚不清楚问题所在。当我拍摄脚本并添加一些诊断打印时,如下所示:
#!/usr/bin/env perl
use strict;
use warnings;
$, = " ";
open my $outputfile2, ">", "hung_jobs.txt" or die $!;
open my $outputfile6, "<", "active_jobs_all_fields.txt" or die $!;
open my $outputfile7, "<", "hung_jobs_old.txt" or die $!;
my @arr = <$outputfile6>;
my @arr1 = <$outputfile7>;
print "arr = ", scalar(@arr), ", arr1 = ", scalar(@arr1), "\n";
foreach my $line2 (@arr) {
chomp $line2;
my @split = split( ' ', $line2 );
print "S0:", @split;
foreach my $line3 (@arr1) {
chomp $line3;
my @split1 = split( ' ', $line3 );
print "S1:", @split1;
if ( $split[9] == $split1[9] ) {
print $outputfile2 "Hello";
print $outputfile2 "$split[0] $split[3] $split[5] $split[6] \n";
print "$split[0] $split[3] $split[5] $split[6]\n";
}
#print $outputfile5 $outputfile2;
}
}
当我创建两个数据文件时:
$ cat active_jobs_all_fields.txt
f1 f2 f3 f4 f5 f6 f7 f8 f9 10
$ cat hung_jobs_old.txt
g1 g2 g3 g4 g5 g6 g7 g8 g9 10
$
然后当我运行它时,我会看到:
$ perl -l x37.pl
arr = 1 , arr1 = 1
S0: f1 f2 f3 f4 f5 f6 f7 f8 f9 10
S1: g1 g2 g3 g4 g5 g6 g7 g8 g9 10
f1 f4 f6 f7
$ cat hung_jobs.txt
Hello
f1 f4 f6 f7
$
这似乎符合你的要求。所以不清楚你的问题是什么。
杂散空白行可归因于-l
选项。在Mac OS X 10.11.2上测试Perl 5.22.0(基于早期版本)。