LOSER () { echo "insert into monks values ('$1',sysdate,null,null,null,'OP',null, +'$8',23,$3);" >> $OPTHREE } TEST () { echo "insert into monks values ('$1',sysdate,null,null,null,'OP',null, +'$8','$5',9,$2,$4,$3);" >> $OPTHREE # the following line should remain unchanged echo "insert into monks values ('$1',sysdate,null,null,null,'OP',null, +'$8',2329,$3);" >> $OPTHREE } MONKS () { echo "insert into monks values ('$1',sysdate,null,null,null,'OP',null, +'$8',2329,$3);" >> $OPTHREE } #### MONKS () { echo "insert into monks values ('$1',sysdate,null,null,null,'OP',null, +'$8',9999,$3);" >> $OPTHREE } #### use strict; use warnings; my $text = do { local $/; }; $text =~ s/(MONKS[\s\(\)]+{.*?,\s*?)2329(\s*?,[^}]*})/${1}9999${2}/sg; print "$text";