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 %]