#!/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 () { 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 () { # (my $i = 0; $i < @first; $i++){ my $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;