use strict; use warnings; use File::Slurp; use Math::Decimal; my $THRESHOLD = '0.000001'; my ($FILE_1, $FILE_2) = ('file1.txt', 'file2.txt'); my $contents = { }; foreach my $file ($FILE_1, $FILE_2) { foreach ( (File::Slurp::read_file($file)) ) { chomp; push @{ $contents->{$file} }, (split /\s+/, $_) } } foreach my $val_1 ( @{ $contents->{$FILE_1} } ) { my $diff = Math::Decimal::dec_sub( $val_1, ( shift @{ $contents->{$FILE_2} } ), ); my $abs_diff = Math::Decimal::dec_abs($diff); my $cmp = Math::Decimal::dec_cmp( $abs_diff, $THRESHOLD ); die "Files NOT equal !!\n" if ($cmp > 0); } print "Files ARE equal !!\n";