如何比较单独文件中的两个哈希

时间:2018-09-27 17:52:29

标签: file hash compare glob

我有6个CSV文件:

LMN Week1

System,name,plan,run
A123,mev,28,12
B123,fsa,31,45
C345,ghd,52,34

LMN Week2

System,name,plan,run
A123,mev,28,12
B123,fsa,31,45
C345,ghd,52,34

LRA第一周

System,name,plan,run
A123,mev,23,11
B123,fsa,31,49
C345,ghd,32,33

LRA Week2

System,name,plan,run
A123,mev,63,12
B123,fsa,36,46
C345,ghd,52,34

AFG第1周

System,name,plan,run
A123,mev,23,11
B123,fsa,31,49
C345,ghd,32,33

AFG第2周

System,name,plan,run
A123,mev,63,12
B123,fsa,36,46
C345,ghd,52,34

除了它们的名称外,它们都属于同一路径,因此我将文件路径设置为全局。完成此操作后,我将第1周的3个CSV文件分配给哈希,将第2周的3个CSV文件分配给哈希。

@file1 = "/path/*/week1"; # * is name (LMN, LRA, AFG)
@file2 = "/path/*/week2";

for each $file1(@file1) {

open my $f1, '<', $file1 or die "cant open

       for each $file2(@file2) {

open my $f2, '<', $file2 or die "cant open


while (($line1=<$f1>) && ($line2 = <$f1>)) {


my($system, $name, $plan, $run) = split (",", $line); #this hash holds values of 
                                                      #the 3 csv files of week1
$hash{$system}{"name"} = $name;
$hash{$system}{"plan"} = $plan;
$hash{$system}{"run"} = $run;


my($system2, $name2, $plan2, $run2) = split (",", $line2); #this hash holds 
                                                           #values of 
                                                           #the 3 csv files of 
                                                           #week2
$hash{$system}{"name2"} = $name2;
$hash{$system}{"plan2"} = $plan2;
$hash{$system}{"run2"} = $run2;


}



} #end of foreach file2



} #end of foreach file1

我正在尝试找到一种方法,可以具体比较LMN第1周的运行次数(12)与LMN第2周的运行次数(12),并找出差异。或者说,LRA第1周的计划(23)到LRA第2周的计划(63)。我只想将相同的文件名(例如LRA到LRA)与其下一周(第1周到第2周)进行比较。

使用下面的代码,它比较第1周的某些运行与第2周的一些运行,但是它没有将LRA第1周与LRA第2周进行特定比较,而是将我不感兴趣的东西(如LRA第1周与LMN第2周)进行了比较:

if ($run1 != $run2) { #checking to see if there is a difference in run between 
                     #week 1 and 2


$difference1 = $run1;
$difference2 = $run2;

$final = $difference1 - $difference2;

0 个答案:

没有答案