#!/usr/bin/perl use strict; my @subs = qw(itchy.foo scratchy.bar homer.bab); my @tmpl = ("To: webmaster\@DOMAIN", "Dear Sir or Madam:", "You have won \$1,000,000!"); my ($sub, $str, $str_for_subbing); for $sub(@subs) { open(FH,">virt.$sub") or die; # Assume @templ in your code should have been @tmpl # -- good reason to use strict! foreach $str (@tmpl) { $str_for_subbing = $str; $str_for_subbing =~ s/DOMAIN/$sub/g; print "$str_for_subbing\n"; print FH "$str_for_subbing\n"; } close(FH) }