my $infilename = "/etc/postfix/virtual"; open my $infile, "<", $infilename or die "Can't open $infilename to read: $!\n"; open my $outfile, ">", "$infilename.new" or die "Can't open $infilename.new to write: $!\n"; local $_; while(<$infile>) { print $outfile $_; print $outfile "$user\@$dom\t$user\n" if /^\Q$dom\E\b/; } close $infile; close $outfile; rename("$infilename.new", $infilename) or die "Couldn't replace $infilename with $infilename.new: $!\n";