I use Here docs for anything small and templating systems for anything serious. I won't open up the CGI.pm shouldn't contain HTML generation code debate again (try a search if you're interested).
Update: As for making heredocs look better in your code, indenting really helps:
my $text = "Hello, World!";
print <<" EOF";
<html>
<head>
<title>Example</title>
</head>
<body>
<p>$text</p>
</body>
</html>
EOF
Just make sure to quote the proper amount of white space before the EOF marker (also use double quotes unless you don't want variable interpolation).