【发布时间】:2014-07-22 20:21:11
【问题描述】:
我是 perl 新手,需要您的帮助来构建逻辑。
我在一个目录中有 10 个文件,每个文件都有一些数据,如下所示。每个文件包含的行取决于用户数设置。例如,如果有 4 个用户,那么将从服务器打印 4 行。
1405075666889,4044,SOA_breade,200,OK,Thread Group 1-1,text,true,623,4044
1405075666889,4041,SOA_breade,200,OK,Thread Group 1-1,text,true,623,4041
1405075666889,4043,SOA_breade,200,OK,Thread Group 1-1,text,true,623,4043
1405075666889,4045,SOA_breade,200,OK,Thread Group 1-1,text,true,623,4044
我想要一些应该在输出目录中创建单个文件并且该文件应该包含 10 行的逻辑
Min_Value, Max_Value, Avg_Value, User1, User2, User3......User4
以及它们在这种情况下第二行的对应值来自第二列。
Min_Value, Max_Value, Avg_Value, User1, User2, User3......User4
4.041,4.045,4.044,4.041,4.043,4.045
.
.
.
.
.
第10个文件数据
这是我的代码...它正在工作,但是 我不知道如何按顺序打印 user1、user2... 及其对应的值
my @soaTime;
my @soaminTime;
my @soamaxTime;
my @soaavgTime;
my $soadir = $Json_Time;
foreach my $inputfile (glob("$soadir/*Overview*.txt")) {
open(INFILE, $inputfile) or die("Could not open file.");
foreach my $line (<INFILE>) {
my @values = split(',', $line); # parse the file
my $time_ms = $values[1]/1000;
push (@soaTime, $time_ms);
}
my $min = min @soaTime;
push (@soaminTime, $min);
print $soaminTime[0];
my $max = max @soaTime;
push (@soamaxTime, $max);
sub mean { return @_ ? sum(@_) / @_ : 0 };
#print mean(@soaTime);
push (@soaavgTime, mean());
close(INFILE);
}
my $outputfile = $report_path."abc.txt";
open (OUTFILE, ">$outputfile");
print OUTFILE ("Min_Value,Max_Value,User1,User2,User3,User4"."\n"); # Prining the data
for (my $count = 0; $count <= $#soaTC; $count++) {
print OUTFILE("$soaminTime[0],$soamaxTime[0],$soaTime[0],$soaTime[1],$soaTime[2],$soaTime[3]"."\n" ); #Prining the data
}
close(OUTFILE);
请帮忙。
【问题讨论】:
-
欢迎来到 SO。请阅读FAQ 和How to Ask。 StackOverflow 不是一项服务,您可以在其中发布问题并让其他人为您解决问题。您应该自己完成工作,然后当您遇到问题时,就您编写的代码提出具体问题。
-
嗨,吉姆,感谢您的宝贵意见。我已添加我的代码以供参考
-
感谢您展示您的代码,但您没有告诉我们您的代码存在的问题。你写的代码有什么问题?它运行吗?它会生成错误格式的文件吗?它会产生一个没有输出的文件吗?很高兴您列出了代码以及您的输入和预期输出,但请告诉我们您的代码存在的具体问题。
-
您能告诉我们您的数据代表什么吗?这是你的整个程序吗?
$Json_time? Do you haveuse strict;` 和use warnings;在你的程序中是什么?
标签: perl