open A, "fileAtmp" || die $!; my ($bufA, $bufB); while ($bufA = ) { $bufB = || last; #jump out if file B is shorter than A my @A = split ':', $bufA; my @B = split ':', $bufB; print OUT $bufA if $A[0] eq $B[0]; } close A; close B; close OUT;