テンプレートツールキットで奇妙な動作が発生しています。たとえば、データ構造(perlで定義され、パラメーターとして渡されたもの)があるとします。
( { FLAG => 1, some => data}, { some => data}, etc )
テンプレートには次のようなループがあります
[FOR ITEMS]
[IF (FLAG) ]
do something
[ELSE]
do something else
[END]
[END]
テンプレートがelseを入力することはないようです。テンプレートをelseに入力させる唯一の方法は、データを変更することです。
( { FLAG => 1, some => data}, { FLAG => 0, some => data}, etc )
falseと評価されるようにします。ただし、データ構造を次のように変更すると、
( { some => data}, { some => data}, etc )
常にelseに入ります(undefがfalseと評価されるため)。
上書きされない限り、次の反復のスコープに残っている変数の「ブリードオーバー」があるように見えますが、これは予想される動作ですか?もしそうなら、それはどこかに文書化されていますか?
編集:後で、上記の動作を引き起こす別の問題であることがわかりました。これは、テンプレートの他の場所で正しい「ELSIF」ではなく「ELSEIF」を使用したことが原因でした。疑わしい場合は、元の投稿で説明した問題を解決したjiraによって提案された解決策を確認してください。