use strict; use warnings; my $label = 'owt'; while (my $line = ) { if ($line =~ m/s_abc_in\(\d+\).*\s*<=\s*s_abc_out\(\d+\).*/){ for (1..6){ my $j = $_ + 1; print "a_abc_in\_rrfa_$label($j) <= s_abc_out\_rrfa_$label($_);\n"; } } else { print $line; } } __DATA__ ................................. s_abc_in(1450) <= s_abc_out(324); # this is my first match an unmatched line s_abc_in(1451) <= s_abc_out(1450); unmatched line, as are the ...... lines ................................