in reply to HTML::Template's watchful eye

It must be the case that the TMPL_INCLUDE processing is done first, before it tries to evaluate the template to generate output, which is when it processes the TMPL_IF's .. This is consistent with the HTML::Template docs that say "The included template contents are used exactly as if its contents were physically included in the master template." which i guess implies that the source include must exist.

I don't know if there's a HTML::Template equivalent (don't see one at a glance), but in Template Toolkit you can do:
[% TRY %] [% INCLUDE some_file.tpl %] [% CATCH %] <!-- some_file.tpl didn't exist --> [% END %]