<textarea>@{
join("",@text)}</textarea>
the proposed solution still returns an array; It needs to be taken out of array context.
Instead of print <<END ,
try:
print "<textarea>" . join ( "", @text ) ."</textarea>\n" ;
This is presuming, of course, that the "\n" is already on the end of each element of @text. if not, you might want to join them with "\n".
Also, be aware that some browsers may take it upon themselves to make each line ending a "\n\r" - especially if you cut and paste into the textarea. I make it a habit to:
$input =~ s/\r//g ;
On all submitted form values to clean it up.