【发布时间】:2013-12-02 08:32:24
【问题描述】:
我想对每个实例名称的 2 个文件进行数字比较,并输出任何不匹配的属性。
Ref.txt:
CELLA CELLA 0.0000 0.0000 0 0 50 47 100 390 798 1000 3349 2938
CELLA/I0/I0 INV 0.0200 0.2210 0 0 20 200 30 100 430 770 230 940
CELLA/I0/I2 INV 1.0400 0.2210 0 0 530 200 250 261 1230 670 1240 390
新建.txt:
CELLA CELLA 0.0000 0.0000 0 0 50 47 100 390 798 1000 3349 2938
CELLA/I0/I2 INV 1.0400 0.2218 0 0 530 200 250 261 1230 670 1240 390
CELLA/I0/I0 INV 0.0200 0.2210 0 0 20 200 30 100 430 770 230 940
预期输出(CELLA/I0/I2 其中 0.2218 不等于 0.2210):
-ERROR: CELLA/I0/I2 has mismatch property.
到目前为止我的代码,我应该如何修复我的代码?
use strict;
my %hash;
sub read_hash {
my $fname = shift;
open(my $fh, "<", $fname) or die "$!";
while (<$fh>) {
chomp;
my ($occurname, $tempname, $x, $y, $reflection, $rotation, $xy1, $xy2, $xy3,$xy4,
$xy5, $xy6, $xy7, $xy8, $xy9, $xy10, $xy11, $xy12, $xy13) = split /\s+/, $fh;
}
}
my %hash1 = read_hash("Ref.txt");
my %hash2 = read_hash("New.txt");
if ($hash1{$x}{$y}{$reflection}{$rotation}{$xy1}{$xy2}{$xy3}{$xy4}{$xy5}{$xy6}{$xy7}{$xy8}{$xy9}{$xy10}{$xy11}{$xy12}{$xy13}
!= $hash2{$x}{$y}{$reflection}{$rotation}{$xy1}{$xy2}{$xy3}{$xy4}{$xy5}{$xy6}{$xy7}{$xy8}{$xy9}{$xy10}{$xy11}{$xy12}{$xy13}) {
print "$occurname has mismatch property";
}
else {
print "Match\n";
}
【问题讨论】:
-
您可以从格式化代码开始,使其可读。这次我给你做了,但是请使用空格,尤其是缩进,让你的代码结构和含义更明显。
标签: perl comparison numerical