Plack::Middlewareでリクエスト終了後になにがしかのか処理をしたい場合 sub call { my ($self, $env) = @_; my $t0 = [gettimeofday]; my $res = $self->app->($env); my $ela = Time::HiRes::tv_interval($t0); }; と書きそうになりますが、これだと $res が CodeRef になるStreaming形式のレスポンスでは正しく処理ができません。 Streaming形式のレスポンスは多くないだろうとか思ってると、Catalystがstreaming形式のレスポンスを返したりするので注意が必要です そこで Plack::Util::response_cb を使うと楽です sub call { my ($self, $env) = @_; my $t0 = [