use strict; use warnings; my $file = shift or die "no file given\n"; my $offset = 12345; open my $fh, '+<', $file or die "Cannot open $file for read/write: $!\n"; seek $fh, 0, $offset or die "Cannot seek to $offset in $file: $!\n"; print $fh "blah blah blah" or die "Cannot print to $file: $!\n"; close $fh; #### $/ = \32; my $pos = tell($fh); while( <$fh> ) { if ($_ =~ /something/) { my $cur = tell($fh); seek $fh, 0, $pos or die "Can't seek: $!\n"; print $fh "something else" or die "Can't print: $!\n"; seel $fh, 0, $cur; } $pos = tell($fh) or die "Can't tell: $!\n; }