tokuhirom's Blog

Perl 初心者がウェブアプリケーションを書く時に気をつけるべきこと

$c->req->param('id')

みたいなメソッドは使ってはいけない。これは歴史的経緯から残っているものなので、基本的に使わない方がいい。

$c->req->parameters->{id}

をかわりに使ってください。

Perl の世界には List コンテキストというものがあって、これがウェブアプリケーションを開発するときには鬼門となります。

+{ id => $c->req->param('id') }

のようなコードは、param メソッドはリストコンテキストではすべての id を返すので、

?id=3&id=hasegawa&id=yosuke

というようなクエリが来ている場合、

+{ id => 3, hasegawa => 'yosuke' }

のようなデータ構造が作成される。これは明らかに意図していない挙動である。

以下の様にかくのがおすすめです。

my $id = $c->req->param('id')
    or die "id NAIYO!";
+{ id => $id }