3
我有一個哈希陣列和一個YAML,它是從linux命令中提取的。我有另一個哈希數組,具有相同的YAML集,但具有不同的值,由相同的命令(稍後運行)執行。2個哈希陣列之間的算術運算
例如,
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
這是散列中相應值之間的數學結果。
我試着迭代和做差異,但它看起來像一個累積輸出。
%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'上使用Data :: Dumper,這樣我們就可以看到這個哈希是如何填充的?你是否使用嚴格控制和使用警告? – DeVadder
輸出在第一次是作爲差異,但從第二次迭代起,它會以累積的形式出現。是的,使用嚴格和警告。 – nohup