use Tie::File; my $origin = '/path/to/test.csv'; my $check = '/path/to/check.csv'; my @array = (); tie @array,'Tie::File',$origin; open(READCHECK,"<$check") or die $!; while(my $line = ){ my ($col1,$col2,$col3,$col4,$col5,@rest) = split(/;/,$line); my $key = $col1.$col2.$col3; my $b_check = 0; foreach(@array){ my ($r1,$r2,$r3,$r4,$r5,@rest) = split(/;/,$_); if($key eq $r1.$r2.$r3){ $b_check = 1; unless($col4 eq $r4){ print "Spalten 4 sind unterschiedlich\n"; } unless($col5 eq $r5){ print "Spalten 5 sind unterschiedlich\n"; } } unless($b_check){ print "Zeile $line gibt's nicht mehr\n"; } } } close READCHECK; untie @array;