You are outputting the text as you receive it.
This is how HTML works. HTML knows nothing about normal linebreaks. Whitespace in text does not break lines in HTML.
If you want to output paragraphs from your text in HTML, you need to convert all linebreaks to <br> tags, or wrap paragraphs in <p>...</p> pairs, or output the text in <pre> tags. Here is how to add <br> tags:
my $textarea_content = $q->param('message');
# Escape all characters that are special for HTML
my %html_escape = (
'<' => '<',
'>' => '>',
'&' => '&',
);
$textarea_content =~ s/([<>&])/$html_escape{ $1 }/ge;
# Convert newlines to <br> tags
$textarea_content =~ s/\r?\n/<br>\n/g;
print $textarea_content;