I suspect you can just to this... my $size = -s '/report.pdf';
... but to be honest I haven't used Perl in years :) BTW It would be a lot more efficient to stream the file contents rather than read it into a variable. Marcus On 30 May 2013, at 16:54, "Chris Faust" <cfa...@doyougot.com> wrote: > Thanks Marcus, is there is a easy way to get the content length? > > I tried > > $length = calculate_body_len(); > $r->err_headers_out->add('Content-Length' => $length); > > Which gave me a corrupted content error, I also tried > > my $body_len = calculate_body_len(); > $r->set_content_length($body_len); > $r->rflush; > > Which just did nothing. > > Thx > -Chris > > From: Marcus Don [mailto:m...@names.co.uk] > Sent: Thursday, May 30, 2013 9:12 AM > To: Chris Faust > Cc: modperl@perl.apache.org > Subject: Re: Help on debugging print problem > > At a guess, I'd say your new machine is using chunked output, so you might > need to add a size header. > > Marcus > > > On 30 May 2013, at 12:11, "Chris Faust" <cfa...@doyougot.com> wrote: > > > Hi, > > I have some code I use all the time I use to download a file: > > if (-e '/report.pdf') { > open(PDF, '/report.pdf') or die "could not open PDF $!"; > binmode PDF; > my $output = do { local $/; <PDF> }; > close(PDF); > $r->content_type('application/pdf'); > $r->err_headers_out->add('Content-Disposition' => > 'attachment; filename="report.pdf"'); > $r->print($output); > } > > I've never had a problem before using the above until trying to do it on a > new machine. On that machine every time I still get prompted to download the > file but FF/IE says its only 20 bytes (even though the pdf is 200k on the > file system) and what is downloaded is not what is on the filesystem. > > I tried different files, different paths etc with the same results so I don't > think it's a location or permissions issue. > > The only thing that gets logged in the attempt is: > > TIGHT LOOP!!!: Apache2::RequestRec=SCALAR(0x47e2f78) can't > Apache2::RequestRec::print! > > Any ideas how I could further debug that error to find the cause? > > TIA! > -Chris > > >