in reply to Help, how do I print out to an html file, not the .pl page

Your question is pretty vague and I can't quite follow what you're trying to ask. However, just a standard reponse for "how do I make it printout somewhere else"...if you're running the script AS a CGI then all STDOUT will be sent to the visitors browser...STDOUT means any print statement without a specified filehandle (or STDOUT specified)...if you want to print HTML into a specific FILE based on the function called then you'll want to do something like:
if ($option eq "index") { open (INDEX, ">filename.html"); print INDEX "print the HTML here"; close INDEX; } elsif ($option eq "menu") { open (MENU, ">filename2.html"); print MENU "Print the HTML here"; close MENU; }
Hope that clears up your question a little bit...if not please update your question to be a bit more specific.

-Adam Stanley
Nethosters, Inc.

Replies are listed 'Best First'.
Re: Re: Help, how do I print out to an html file, not the .pl page
by dawnamarr (Novice) on Apr 17, 2001 at 19:41 UTC
    Okay, I'll try to explain in more detail. This script takes user input to select a month and year. Then it reads 4 data files to see if they have entries for that month. All of the entries/or no data messages are then written out into tables according to which data file it came from. Right now, I am writing it all out to the .pl page. Which is in the cgi-bin directory. However, I would like the output to go someplace up a few directory levels, onto an html page. The print statements are scattered all over the place. Is there a way to say only one time that all output should go to www.???.???. Like, will what you told me before work if I just open the file at the beginning and close it at the end? I read something about predeclaring print statements, but don't get it. This is new to me, against my will, (and, I am a dummy). Thanks for your help.
      OK I think I understand it a little better now...and yes what I mentioned will work if you open the file at the beginning of the code, and close it before it ends. I think what you are referring to when you say predeclaring print statements is using the 'select' function. This prevents you from having to specify on every print line the filehandle you wish to output to. If you decide to choose that you can do something like this:
      #!/usr/bin/perl open(HTMLFILE, ">your/html/file.here"); select(HTMLFILE); #....do some things with CGI input here print "This goes in your HTML file\n"; #....do some other things if necessary print "So does this\n"; close HTMLFILE;
      Your alternative is not to use the select statement...which would look like this:
      #!/usr/bin/perl open(HTMLFILE, ">your/html/file.here"); #....do some things with CGI input here print HTMLFILE "This goes in your HTML file\n"; #....do some other things if necessary print HTMLFILE "So does this\n"; close HTMLFILE;

      -Adam Stanley
      Nethosters, Inc.
        Thank you so much. It is working, and I am using the print HTMLFILE each time. I did try it the other way and wound up with just a blank screen.
        Thank you, it is working now. I thought I already sent this message, but didn't see it appear. Anyway, I am using the print HTMLFILE with each print line. The other way did something, but all I saw was a blank screen. You guys are great. Wish I had known this place existed before, when I was really pulling my hair out.