Okay, I think I got the solution to my last question... it was simple. In fact I solved it in the following way...
in reply to Re^2: cgi download and delete file
in thread cgi download and delete file
I can now redirect to another runmode passing the $output variable and solve the problem as you suggested. thank you very much!
my $output = $self->download_zip();
#here I can do what I want. unlink and so on..
my $filename = "temporaneo/" . $self->session->param("nom_projet")
+ . ".zip";
#and only then I stream the output