У меня работает следующее:
my $tt = Template->new;
$tt->process( \"[% IF foo == bar %]blah[% END %]", { foo => 42, bar => 42 } );
Это выводит "бла". Поэтому я подозреваю, что ваши две переменные не содержат того, что вы думаете, они делают. Template Toolkit использует равенство строк для ==
, поэтому, если вы сделаете:
my $tt = Template->new;
$tt->process( \"[% IF foo == bar %]blah[% END %]", { foo => 42, bar => "42 " } );
Это сломается. Возможно, вам придется немного помассировать данные, чтобы они работали правильно с равенством строк.