# $ starman app.psgi
use strictures;
use autodie q(:all);
use Time::HiRes qw(sleep);
open my $h, '<:raw', 'the.pdf';
my $app = sub {
my $env = shift;
return sub {
my $respond = shift;
my $writer = $respond->([200, ['Content-Type' => 'application/pdf']]);
my $buf;
while (sysread($h, $buf, 1024)) {
$writer->write($buf);
sleep 0.02;
}
$writer->close;
};
};