MENTAで開発をしていて引っかかったこととその解決法を3点だけ書いておきます。
- MENTA::Templateで「?=r」が使用できない
- config.pl と menta.cgi
- テンプレートで日本語が文字化け(UTF-8)
MENTA::Templateで「?=r」が使用できない
MENTA::Templateで「?=」を使用すると、Perlコードの戻り値をそのまま出力できます。しかし、この際にMojo::Templateと違うのは、その出力をHTMLエンコードする点です。
<!-- $titleを縦書きで表示 --> ?= join "<br>", split //, $title;
これを出力する際、「<br>」を「<br>」に変換してしまいます。これを防ぐため、MENTA::Templateでは「?=r」という書き方もあるみたいですが……動作しません。仕様が変わったのかな?
とりあえずの対策として、複数行に分けるか、「<?= ?>」でエンコードしてもいい部分だけインラインにするといいです。
config.pl と menta.cgi
MENTAのルートにconfig.plというファイルがあり、MENTAの設定ができそうな内容が書いてありますが、これを書き換えて記述しても反映されません。
設定はmenta.cgiに書いたほうがいいです。
テンプレートで日本語が文字化けする(UTF-8)
プログラムからテンプレートに渡す日本語の文字列を、テンプレートで出力しようとすると文字化けする現象が起きました。プログラムも、プラグインも、テンプレートも、MENTA自体も、全部UTF-8で書かれています。また、テンプレートに埋め込まれた日本語は化けません。
cgi-server.plを動かしていたCygwinでの文字コードがShift_JISだからかな? と思ってUTF-8化してみたけど変わらず。
いろいろ試してみると、UTF-8フラグが問題のようでした。コントローラに use utf8; を追記すると文字化けが解消されました。




コメントする