sub download_file { my ( $filename, $mime ) = @_; if ( ! -e $filename ) { croak "$filename does not exist": } my $filesize = -s $filename; # print full header print "Content-disposition: attachment; filename=$filename\n"; print "Content-Length: $filesize\n"; print "Content-Type: $mime\n\n"; # open in binmode open READ, "< $filename" or croak "Cannot open $filename for reading: $!"; binmode READ; # stream it out binmode STDOUT; { local $/; print ; } close(READ); # should always return true return(1); }