As Mr. Muskrat suggests you really should consider using a templating system. I recommend HTML::Template is a fairly easy entry point for this sort of task. Consider:
#!/usr/bin/perl
use strict;
use warnings;
use HTML::Template qw();
use CGI qw();
my $fName = 'sample.html';
open my $temp, '>', $fName or die "Can't create $fName: $!\n";
print $temp <<'HTML';
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-U
+S">
<head>
<title><TMPL_VAR name="title"></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-88
+59-1" />
</head>
<body>
<div id="<TMPL_VAR name="divname">">
<TMPL_LOOP name="divs"> <div><TMPL_VAR name="div"></div>
</TMPL_LOOP></div>
</body>
</html>
HTML
close $temp;
my $tmpl = HTML::Template->new(filename => $fName);
my @fields = qw(Hello Goodbye Friend Adios Amigo);
my @loopParams = map {{div => $_}} @fields;
print CGI::header();
$tmpl->param(title => "testme");
$tmpl->param(divname => 'div-test');
$tmpl->param(divs => \@loopParams);
print $tmpl->output();
Prints:
Content-Type: text/html; charset=ISO-8859-1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-U
+S">
<head>
<title>testme</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-88
+59-1" />
</head>
<body>
<div id="div-test">
<div>Hello</div>
<div>Goodbye</div>
<div>Friend</div>
<div>Adios</div>
<div>Amigo</div>
</div>
</body>
</html>
True laziness is hard work