如何将每个文件与一个文件相加perl我的文件数据
File1中
1
23
12
43
文件2
1
98
11
3
文件3
12
113
34
24
FILE4
12
143
123
1
我试着试试这个:
$dir = 'd:\occ';
opendir (file,"$dir");
@eachfile = grep{m/.*\.txt/g} readdir (file);
for ($i = 0; $i<=scalar @eachfile; $i++){
for ($j=0; $j<=scalar @eachfile; $j++){
open(fil1,"$dir/$i");
open(fil2,"$dir/$j");
@ar = <fil1>;
@br = <fil2>;
my $tot;
$tot+=$_,foreach (@ar);
$divide = $tot/4;
my $tot2;
$tot2+=$_,foreach (@br);
$divide2 = $tot2/4;
$ans = $divide+$divide2;
print "$i + $j = $ans\n";
}
}
我希望每个文件都添加四个。然后将每个值与另一个数据相加。 最后通过此代码计算16个输出我该怎么做。我希望输出
1 + 1 = 39.5
1 + 2 = 48
1 + 3 = 65.75
1 + 4 = 89.5
2 + 1 = 48
2 + 2 = 56.5
... and so on
4 + 3 = 115.5
4 + 4 = 139.5
计算总共16个输出
答案 0 :(得分:0)
首先,您要查找每个文件的平均值。
open(my $fh, '<', $file_name) or die $!;
my $sum;
my $count;
while (<$fh>) {
chomp;
$sum += $_;
++$count;
}
$avgs{$file_name} = $sum/$count;
这会给你
my %avgs = (
'File1' => (1+23+12+43)/4,
'File2' => (1+98+11+3)/4,
'File3' => (12+113+34+24)/4,
'File4' => (12+143+123+1)/4,
);
现在,您希望依次添加每个元素及其后续元素。这只是两个嵌套循环。
my @file_names = sort keys %avgs;
for my $i (0..$#file_names) {
for my $j ($i..$#file_names) {
print "$file_names[$i] + $file_names[$j] = ",
$file_names[$i] + $file_names[$j], "\n";
}
}
答案 1 :(得分:0)
我问了一些错误的问题,所以只有任何一个人都不理解我的问题。我解决了一个问题。
$dir = 'd:\occ';
opendir (file,"$dir");
@eachfile = grep{m/.*\.txt/g} readdir (file);
for ($i=0; $i<=scalar @eachfile; $i++){
for ($j=0; $j<= scalar @eachfile; $j++){
open(fil1,"$dir/$eachfile[$i]");
open(fil2,"$dir/$eachfile[$j]");
@ar = <fil1>;
@br = <fil2>;
my $tot;
$tot+=$_,foreach (@ar);
$divide = $tot/4;
my $tot1;
$tot1+=$_,foreach (@br);
$divid = $tot1/4;
$ans = $divide + $divid;
print "$i + $j = $ans\n";
}
}
在此脚本中打印我期望的输出。