While there are many people who do things the "old" way - by putting HTML inside your Perl code:
#!/usr/bin/perl -w
use CGI;
my $q = CGI->new();
print $q->header();
print "<p>Hello, " . $q->param('name') . "!</p>\n";
The trend for some time has been to use a templating engine such as
Apache::ASP (my favorite) or
Template::Toolkit. These allow you to place Perl inside your HTML.
Example:
<html>
<head>
<title>Apache::ASP Example</title>
</head>
<body>
<p>Hello, <%= $Request->QueryString("name") %>!</p>
<%
for( 1...7 ) {
%>
<font size="<%= $_ %>">The time is <%= scalar(localtime()) %></font>
<br>
<%
}# end for()
%>
</body>
</html>
Depending on your needs (i.e. - Session management, mod_perl, etc) each option has its own strengths and weaknesses. Keep asking until you find what you're looking for.
My only advice is to use the simplest thing that will get the job done.