Catalyst-Runtime
    
    
  
  
  
view release on metacpan or search on metacpan
lib/Catalyst/Response.pm view on Meta::CPAN
Or using L<IO::File::WithPath>
  my $fh = IO::File::WithPath->new($file, 'r');
And then passing the filehandle to body and setting headers, if needed.
  $c->response->body($fh);
  $c->response->headers->content_type('text/plain');
  $c->response->headers->content_length(-s $file);
  $c->response->headers->last_modified((stat($file))[9]);
L<Plack::Middleware::XSendfile> can be loaded in the application so:
 __PACKAGE__->config(
     psgi_middleware => [
         'XSendfile',
         # other middlewares here...
        ],
 );
( run in 0.263 second using v1.01-cache-2.11-cpan-5dc5da66d9d )