my $Key=$NR ; my $Cmp=$CHARGE ; my $Key2=$INVOICE_TXT; sub Read_File { my $FILE = shift ; open (my $fh, "<", $FILE) || die "$!" ; my %hRec ; while (<$fh>) { chomp; #my @RecLine=split (/;/) ; my @RecLine=split ('\t') ; $CmpKey=$RecLine[$Key] ; $CmpKey2=$RecLine[$Key2] ; $CmpValue=$RecLine[$Cmp] ; $hRec{$CmpKey,";",$CmpKey2}=$CmpValue; } return (%hRec) ; } my %hBase=Read_File($ARGV[0]) ; my %hPost=Read_File($ARGV[1]) ; my $FILE_DATE=`date "+%Y%M%d_%H%M_%S"` ; chomp ($FILE_DATE) ; my $OUT_FILE="/tmp/CMP_OUT_$FILE_DATE.txt" ; open ( OFILE, "> $OUT_FILE" ) or die "FATAL ERROR! Unable to write file(!)\n" ; ## Debug ## #chomp($key); #foreach my $key (sort {$a<=>$b} keys %hBase) { print "$key -> $hBase{$key}\n"; } #foreach my $key (sort {$a<=>$b} keys %hPost) { print "$key -> $hPost{$key}\n"; } foreach my $key (sort {$a<=>$b} keys %hPost) { $count=$count+1 ; if ($hBase{$key} ne $hPost{$key}) { #my $out_counter = "\n##Comparing _$ARGV[0] vs. $ARGV[1]_ differences(!) in record: $count##\n" ; my ($recnos, $vINVOICE_TXT) = split (';', $key) ; chop ($recnos) ; $vINVOICE_TXT=~s!^.!!; my $vInv= "\"$vINVOICE_TXT\"" ; my $Rec=`egrep ^$recnos"\t"\$recnos.*$vInv $ARGV[0]` ; my $out_baseline = "\n$ARGV[0]:\n$HEADER\n$Rec" ; my $Rec=`egrep ^$recnos"\t"\$recnos.*$vInv $ARGV[1]` ; my $out_compare="\n$ARGV[1]:\n$HEADER\n$Rec" ; my $out_result="\n$ARGV[0] [$key -> $hBase{$key}] do not match(!) with $ARGV[1] [$key -> $hPost{$key}] in record: $count\n" ; print OFILE "$out_result $out_baseline $out_compare " ; print "$out_result $out_baseline $out_compare " ; } } close ( $FILE ) ; close ( OFILE ) ;