use CGI; my $q=new CGI; my $filename=$q->param("some.param.name"); die "I won't display the file: $filename" unless some_test_or_other($filename); print $q->header(-type=>`file -bi $filename`."; file=$filename", -content_dispostion=>"attachment; filename='$filename'"). `cat $filename`;