stavros has asked for the wisdom of the Perl Monks concerning the following question:

Hello Monks,

i need your wisdom on an issue that i have. i want dynamically to create a text file with some data and send it to the user through a perl program with cgi.Please send me an advice about how to do it.Is it a good idea to use the module CGI::Application::Plugin::Stream? If yes please sent me a simple exapmle because i tried to incorporate it and the only thing that i take is an empty page.I know that i am doing sth wrong since i am a begginer.

Thanks in advance for your help.

Replies are listed 'Best First'.
Re: file back to the user
by Plankton (Vicar) on Oct 21, 2011 at 21:54 UTC
    cgi implies you are running a web server. If you are running an Apache web server you typically place your cgi scripts in a directory named cgi-bin just under your web server's DocRoot directory. Try putting this script in that directory:
    #!/usr/bin/perl ## ## printenv -- demo CGI program which just prints its environment ## print "Content-type: text/plain\n\n"; foreach $var (sort(keys(%ENV))) { $val = $ENV{$var}; $val =~ s|\n|\\n|g; $val =~ s|"|\\"|g; print "${var}=\"${val}\"\n"; }

      Thanks for answering.i am running abyss web server x1. But my question was sth else.Sorry for not being so clear. i am using html for the interface but somewhere on my page i want to have a let's say a link, i don't know exactly what, so that when the user put his mouse pointer into it, then he would have, throught a download procedure, the opportunity to take a txt file with some data.

      So i want to have informations on my page and somewhere it would be something like "Data file (txt)" that the user when it places his mouse he could make it possible to see the data in new page or download it to his pc.Any ideas?

        The previous answer still stands; he was giving you an example CGI script to try, which would help narrow down the problem. In general, your CGI script needs to:

        1. Be executable (and the web server must be configured to execute it as a CGI).
        2. Send a proper Content-type header, followed by a blank line.
        3. Print to STDOUT the text that you want to send.

        If you get a blank page when you click on it, then you're probably doing #1 and #2 right. If your script weren't running, and weren't sending a Content-type header, you'd get some kind of server error (although I suppose it's possible that a badly configured or designed web server wouldn't give you a useful error). So your script may be getting to that point, but dying before it outputs the text.

        Start tracking down the problem by running the script from the command line to see if it reports any errors and/or produces the correct output there. Also check your web server logs for errors; CGI script errors often end up there.

Re: file back to the user
by locked_user sundialsvc4 (Abbot) on Oct 22, 2011 at 13:32 UTC

    The magic word remains the same ... Content-Type in the header.

    Request a file from someplace and use, say, Firebug to observe the HTML ... headers and content.   Then, do the same with your app, and find what the differences are.