У меня есть хеш-массив с YAML, который был взят из команды Linux. У меня есть другой хеш-массив с тем же набором YAML, но с другими значениями, той же командой, которая была запущена позже.
Eg.
content.none:
bytes: 31046
content.image.gif:
bytes: 0
а также
content.none:
bytes: 31050
content.image.gif:
bytes: 0
Теперь я ищу математическую операцию между значениями. Я ищу выход
content.none:
bytes: 4
content.image.gif:
bytes: 0
который является результатом математики между соответствующими значениями в хеше.
Я пробовал повторять и делать diff, но это похоже на кумулятивный результат.
%host_stat_new=New stats
%host_stat_old=Old stats (taken from stats.yml, which contains old data)
while (true){
open my $FH1, ">stats.yml" or die "cannot write to stat file because $!\n";
foreach my $line4 (keys %host_stat_new){
print $FH1 "$line4:\n";
foreach my $line5 (keys %{$host_stat_new{$line4}}) {
print $FH1 " $line5: \n";
foreach my $line6 (keys %{$host_stat_new{$line4}{$line5}}){
my $diff1 = $host_stat_new{$line4}{$line5}{$line6};
my $diff2 = $host_stat_old{$line4}{$line5}{$line6};
$math=$diff1-$diff2;
#$host_stat1{$line4}{$line5}{$line6} = $math;
$host_stat_new{$line4}{$line5}{$line6} = $math;
print $FH1 " $line6: $host_stat_new{$line4}{$line5}{$line6}\n";
}
}
}
}
Что я здесь делаю неправильно? Есть ли какой-нибудь модуль, который может это сделать?
%host_stat_old
иnew
, чтобы мы могли видеть, как заполняется этот хэш? Выuse strict
иuse warnings
? - person DeVadder   schedule 19.03.2014