sub download_file { # REF: http://www.perlmonks.org/index.pl?node_id=110714&lastnode_id=3628 my ( $send_file, $send_name, $mime ) = @_; die "$send_file does not exist." unless ( -e $send_file ); my $filesize = -s $send_file; print $query->header(-type=>$mime, -Content_disposition=>"attachment; filename=$send_name", -Content_Length=>"$filesize" ); # open in binmode open READ, "< $send_file" or die "Cannot open $send_file for reading: $!"; binmode READ; binmode STDOUT; # stream it out { local $/; print ; } close(READ); return(1); # should always return true }