Как сравнить два хэша в отдельных файлах - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть 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 Week1

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 Week1

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

AFG Week2

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

Все они принадлежат одному и тому же пути, за исключением их имени, поэтому я выбираю путь к файлу,После этого я назначаю 3 файла CSV недели 1 хэшу, а 3 файла CSV недели 2 хэшу.

@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 Week 1 Run (12) против LMN Week 2 Run (12) и найдите разницу.Или, скажем, план LRA Week 1 (23) к плану LRA Week 2 (63).Меня интересует только сравнение того же имени файла (например, LRA to LRA) с его следующей неделей (Week1 - Week2).

Используя мой код ниже, он сравнивает НЕКОТОРЫЙ прогон недели 1 с НЕКОТОРЫМ прогоном недели 2, однако он не сравнивает LRA неделю1 с LRA неделю конкретно, а скорее сравнивает что-то, что меня не интересует, как LRA week1на 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;
...