あたらしものずきっ!

試してみたものとか、遊んでみたものを色々記してみます。

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;
}

とか。

  • スカラー値をprintしまくりたい。
    • 引数にスカラー値を渡した上で、 ''.$foo; とするか、下記のようにdo_*内で生データとして返す。
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使う方が効率的だと思う。