Well I used this program I did over a year ago to compare numbers from diffrent programs. I would have done it diffrently now so don't complan too much about the sub optimal stuff.
#!/usr/bin/perl -w
use strict;
use constant true => 1;
use constant false => 0;
use Perl6::Say;
use Perl6::Variables;
exit say 'You must give at least two file names as arguments.' unless
+@ARGV > 1;
my $tmp_path = '/tmp/same_or.tmp';
my @files;
my $i = 0;
my @num;
foreach my $file (@ARGV) {
open IN, $file or die "Damn $file: $!";
open OUT, '>', $tmp_path . $i or die $!;
my $num = 0;
while (<IN>) {
s/^\s+//;
my @text = split /\s+/, $_;
$num += scalar @text;
foreach (@text) {
say OUT $_;
}
}
close IN or die $!;
close OUT or die $!;
@num[ $i ] = $num;
push @files, $tmp_path . $i;
$i++;
}
my $first = shift @files;
say "\@num[0] = @num[0]";
$i = 1;
foreach my $file (@files) {
open IN1, $first or die $!;
open IN2, $file or die $!;
say "\@num[$i] = @num[$i]";
unless ( @num[ 0 ] == @num[ $i ] ) {
unlink $first;
unlink @files;
exit print "Different length\n";
}
while (<IN1>) { # (my $i = 0; $i < @first; $i++){
my $in2 = <IN2>;
unless ( $_ == $in2 ) {
unlink $first;
unlink @files;
chomp;
chomp $in2;
exit print "Numbers $_ == $in2 failed\n";
}
}
close IN1 or die $!;
close IN2 or die $!;
$i++;
}
print "Same \n";
unlink $first;
unlink @files;