in reply to Serving Dynamic Content with Plack

Your last point isn't entirely correct. The Debug middleware will remove the Content-Length header if it exists, preventing any issues. Most middleware components that modify the body will use Plack::Util::response_cb to do so, and it takes care of removing the header. Having them out of order like that would still be bad though, as you would be calculating the length then immediately throwing it away.