Hallo,
Jedoch wird der Dateiname nicht richtig übertragen. [...]
Eigentlich gehört im HTTP-Responseheader die 'Content-Disposition' definiert.
mit dem CGI-Modul kannst Du das so erledigen:
print $query->header(-type=>'application/octet-stream',
-attachment=>'filename.ext'
);
Grüße
Klaus