如何使用perl在两个文件中各自位置的元素进行计算?
我有两个文本文件。如何使用perl在两个文件中各自位置的元素进行计算?,perl,Perl,我有两个文本文件。 1.我想将两个文件的每个元素除以各自文件中的数字。 2.我想计算两个文件中各自索引位置上通过上述计算获得的值之间的差值的平方 文件1: 1111**(将每个元素除以该数字) 文件2: 2222**(将每个元素除以该数字) 我想要输出,例如第一个元素[(1000/1111)-(2000/2222)]^2的输出,等等 (注意:两个文件中的空格或制表符数量相等) #/usr/bin/perl-w 使用列表::MoreUtils qw; 打印“输入文件1:”; chomp($file
1.我想将两个文件的每个元素除以各自文件中的数字。
2.我想计算两个文件中各自索引位置上通过上述计算获得的值之间的差值的平方 文件1: 1111**(将每个元素除以该数字) 文件2: 2222**(将每个元素除以该数字) 我想要输出,例如第一个元素[(1000/1111)-(2000/2222)]^2的输出,等等 (注意:两个文件中的空格或制表符数量相等)
#/usr/bin/perl-w
使用列表::MoreUtils qw;
打印“输入文件1:”;
chomp($file=);
打开(FH$文件);
打印“输入文件2:”;
chomp($hspfile=);
打开(FH1,$HSP文件);
打开(OUT“>$file.$hspfile.txt”);
my@list1=拆分'\s+';
my@list2=拆分'\s+';
my@diff=pairwise{($p-$q)^2}@list1,@list2;
打印出“@diff”;
关闭FH;
关闭FH1;
此代码不会在空白处运行。可能是这样的吗
use strict;
use warnings;
use autodie;
my @data;
for my $file (qw/ file1.txt file2.txt /) {
open my $fh, '<', $file;
local $/;
my $data = <$fh>;
my $i = 0;
push @{$data[$i++]}, $_ for $data =~ /[0-9.]+/g;
}
my $divisor = pop @data;
for (@data) {
my $val = $_->[0] / $divisor->[0] - $_->[1] / $divisor->[1];
printf "%.10f\n", $val * $val;
}
@马丁克莱顿:我编辑了这个问题。
2000 1.45 1450 1.56 2559
335 0.35 499 0.54 1104
1433 1.49 1498 1.62 2511
684 0.71 263 0.28 1481
#!/usr/bin/perl -w
use List::MoreUtils qw<pairwise>;
print"Enter file 1: ";
chomp($file=<STDIN>);
open(FH,$file);
print"Enter file 2: ";
chomp($hspfile=<STDIN>);
open(FH1,$hspfile);
open(OUT,">$file.$hspfile.txt");
my @list1 = split '\s+', <FH>;
my @list2 = split '\s+', <FH1>;
my @diff = pairwise { ($p - $q)^2 } @list1, @list2;
print OUT "@diff";
close FH;
close FH1;
use strict;
use warnings;
use autodie;
my @data;
for my $file (qw/ file1.txt file2.txt /) {
open my $fh, '<', $file;
local $/;
my $data = <$fh>;
my $i = 0;
push @{$data[$i++]}, $_ for $data =~ /[0-9.]+/g;
}
my $divisor = pop @data;
for (@data) {
my $val = $_->[0] / $divisor->[0] - $_->[1] / $divisor->[1];
printf "%.10f\n", $val * $val;
}
0.0000000000
0.0000004258
0.4258414140
0.0000004929
1.3263326558
0.0227301083
0.0000000248
0.0504327886
0.0000000591
0.2468596095
0.4159147013
0.0000004497
0.4545017058
0.0000005315
1.2770423982
0.0947597910
0.0000001021
0.0140095243
0.0000000159
0.4442444469