use warnings; use strict; use Fcntl qw(SEEK_CUR); # open existing file for read/write open (my $in, '+<', 'file1.txt') || die "Unable to open file1.txt:$!"; while (<$in>) { # Identify the record if (/4444/) { # Construct the new record s/4/#/g; # Position the file pointer seek ($in, -length($_)-1, SEEK_CUR); print $in $_; } } close $in; #### 111111111111111 22222222 33333333333 4444444 5555555555555555 66666666666 #### 111111111111111 22222222 33333333333 ####### 555555555555555 66666666666