Yacafi弄っててきがついたこと
Yacafiを使った簡易掲示板を作ろうと延々弄っていて、色々ときがついたこと。JKだらけかもしれないけど、なれてない身にとってはこんなことでも衝撃的ということで。
- do_indexを省くと404 not foundと返される。
- do_indexの内容が初期表示(index)になるので、sub do_index{}はよほどのことがない限り必ず含める。
- view_*の中で変数を直接printすると1などが表示される。
- ''の中身、あるいは''と結合した変数がprintとして出力されるので、つぎのようにする。
sub view_foo{ my $foo = "Hello.World"; ''.$foo; }
あるいは
sub view_foo{ my $foo = "Hello.World"; join '',$foo; }
とか。
do_foo{ my $hogehoge = "Hello, World"; return { header => '{ Content-type: text/html }', body => $hogehoge, } }
- Template-Toolkitつかって処理したい。
- 下みたいに普通に使う。でも正直使わずに直接HTMLを埋め込んだ方が書き直しやすいし、操作しやすくて楽。
use Template; sub do_foo{ my $foofoo = "Hello, World"; my $tt = Template->new(ENCODING => 'utf-8'); $tt->process('main.tt',{ postdata => $foofoo, },\my $return); my $res = Encode::encode('utf-8', $return); view 'foo',$res; #return{ # header => '{ Content-type: text/html }', # body => Encode::encode('utf-8', $return), #} } sub view_foo{ my $args = shift; ''.$args; }
手軽く書けるCGIフレームワークだから、再利用のことを重く考えずにがりがりかくのが一番のよう。クエリを用いる操作がどんな感じか分かりやすいので、CGI学習のために0から書くくらいならYacafi使う方が効率的だと思う。
Yacafiのデバッグモード
$Yacafi::DEBUG = 1;
とすれば動いた。てっきり/dieすれば勝手に表示されると思い込んでいた…。
#!/usr/local/bin/perl use strict; use watnings; use Yacafi; $Yacafi::DEBUG = 1; dispatch; . .. ...