複数のコントローラーで共通に必要な値を渡す
グローバルに値を設定するのであればdefaultsメソッドを使うことができます。けれども、ときには複数のコントローラーだけで、値を利用したいという場合があると思います。
そのような場合は次のようなテクニックを使います。
my $r = $app->routes->to(val => $val); # 後は同じ $r->get('/foo'); $r->get('/bar');
ルーターを取得するときにtoを使うところがポイントです。toメソッドは、通常はコントローラーとアクションの組み合わせを書くのに利用するのですが、実は、コントローラーのデフォルト値を設定することもできます。
このようにすればコントローラー側で、設定した値を利用することができます。
# コントローラー内 my $val = $c->stash('val');