Mojolicious::Liteアプリでは、最後を「1;」で終わってはいけない。
Mojoliciousでは、自動的にファイルの変更を検地してくれるmorboと呼ばれるサーバーを起動して開発ができます。
morbo myapp.pl
でもひとつ気をつけてほしいことがあります。実は以下のアプリケーションは正しくうごきません。
use Mojolicious::Lite; get '/' => sub { shift->render(text => 'aaa') }; app->start; 1;
Perlのソースコードとしては正しく見えます。でもmorboコマンドで実行すると以下のようにエラーになります。
"myapp.pl" is not a valid application.
実は最後の1;という行が問題です。実はapp->startでスクリプトが終わっている必要があります。__DATA__セクションがある場合は、app->startと__DATA__の間に空白以外をいれてはいけません。
以下のように修正すると正しく動きます。
use Mojolicious::Lite; get '/' => sub { shift->render(text => 'aaa') }; app->start;
これはPSGIでアプリケーションを実行するときも同じことが言えるので気をつけましょう。