use strict; use warnings; open(my $fh2, '<', $file2name) or die("Can't open $file2name for reading: $!\n"); while (<$fh1>) my (undef, $posA) = split(/\s+/); local $/ = ""; while (<$fh2>){ my @lines = split(/\n/); my ($posB, $posend) = findpos(@lines); next if $posA < $posB; last if $posA > $posB + $posend; processPara(@lines); } }