use strict; use warnings; open (rangeOutput, '>', "test.txt") or die "Cannot Open File: test.txt: $!"; open (rangeFixed, '<', "rangeFile.txt") or die "Cannot Open File: rangeFile.txt $!"; while ( ) { $_ = s/^(IMB,\d+,V1\s,)(\d+),\K(?:.*\n)+\1\d+,(\d+).*/$3/gmx; print rangeOutput $_ . "\n"; }