Drkcore

02 02 2006 catalyst Tweet

$req->paramと$req->params

Catalyst初心者二人組(片方はPerlすら初心者)が謎のエラーに遭遇して、無事に生還したぞの巻だ。

最近mysqlを使ったウェブアプリケーションを構築していて、僕はその面倒を見ているわけだ。普通のCRUDな感じのアプリなんで、いつも通りに書けばたいして難しい話ではないが、(僕が)どうしてもフレームワークを使ってみたかったので、O/Rマッピング最高だろ!な!わかるだろ、SQLなんて書かなくていいんだぞ!なんつって、手動かしてもらってる。

で、はまった箇所はGETでパラメータを渡してmysqlにinsertするとこで、Catalyst::Model::CDBI::DB->create するとこんなエラーを吐いて終了したぞ(何故?)。

Caught exception in Test->add "Can't use string ("5") as a subroutine ref while "strict refs"

最初原因がわからなくて小一時間悩んだが、

  • $req->paramはパラメータ
  • $c->req->param('kzfm')
  • $req->paramsはパラメータのリファレンス
  • $c->req->params->{kzfm}

ので、$c->req->param->('kzfm')と書いてた部分がエラーの原因だった。

Q.じゃぁ5って何よ? A.パラメータにわたった変数の数です

Catalystはなかなか新鮮だ。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021