open(FILE2,"<$file2name") or die "cant open $file2name for reading!\n"; while ($A = ) ($tmp,$pos)= split /\s+/, $A; local($/) = ""; while (){ @lines = split(/\n/,$_); ($posB,$posend) = findpos(@lines); next if $posA < $posB; last if $posA > $posB + $posend; processPara(@lines) } } } #### 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); } }