Yes, we can. Like that (untested):
...
my $trigger = 'onload';
$html .= <<END;
...
<td bgcolor="#EEEEEE">@{[ $qry->popup_menu(-id=>'ID
+', -name=>'PS', -size=>10, -values=>$array_ref, -labels=>$hash_ref,
+-${trigger}=>"fetchData(id,'','','')") ]}</td>
</tr>
</table>
END
The original code did already interpolate a list expression in the heredoc string (
@{[ ... ]} was already present). So you just have to replace the fixed text part (
onChange) in the above expression (
...) with a string variable (here I used
$trigger).