$old_pos = 0 while ($A = ) ($tmp,$pos)= split /\s+/, $A; open(FILE2,"<$file2name") or die "cant open $file2name for reading!\n"; local($/) = ""; seek FILE2, $old_pos, 0; while (){ @lines = split(/\n/,$_); ($posB,$posend) = findpos(@lines); next if $posA < $posB; last if $posA > $posB + $posend; processPara(@lines) } } $old_pos = tell FILE2; }