in reply to including subroutines

I'm not 100% sure I follow you, but may I assume you are doing some sort of server-side include?

Let us therefore assume that the file that contains %!poll!% is a template that is read, and the output is sent to the browser.

In that case you need to open the file, read it line by line, and perform a substitution using a subroutine call. The trick is to use the /e switch on your substitution. Something like:

s/%!poll!%/poll_view/e

... should do the trick nicely. (Assuming the line is being held in $_).

I note in passing that you could use Perl's alternate quoting mechanisms to good effect. Consider the difference between

print "<td width=\"160\"> <img src=\"images/left.gif\" width=\"2\" height=\"5\"><img +src=\"images/poll.gif\" width=\"$num\" height=\"5\"><img src=\"images +/right.gif\" width=\"2\" height=\"5\"></td> <td width=\"10\" class=\"$ab\">$fin</td></tr>";

and

print qq{<td width="160"> <img src="images/left.gif" width="2" height="5"><img src="i +mages/poll.gif" width="$num" height="5"><img src="images/right.gif" w +idth="2" height="5"></td> <td width="10" class="$ab">$fin</td></tr>};


print@_{sort keys %_},$/if%_=split//,'= & *a?b:e\f/h^h!j+n,o@o;r$s-t%t#u'