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 }