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. | [reply] [d/l] |
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.
| [reply] |
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. | [reply] [d/l] [select] |
First, please forgive, and reply to this note with more information, if I've misunderstood your question. I'm just taking a best guess from what you're saying here.
If you want to save the HTML you're printing to another file, first open it:
my $location_for_html_file = 'html_file.html';
open (HTML_FILE, ">$location_for_html_file") or die "Cannot open HTML
+file for writing at $location_for_html_file: $!\n";
Then print to that file, using the notation that puts the filehandle you named in the open command above right after print:
print HTML_FILE "Put your HTML Code here";
The HTML_FILE above tells print to send the data to the filename you opened with the open command, rather than your browser.
There is a way to send all text to it as well, for this, you'd use the select statement. However, I'd not recommend it, as you lose some control over what goes where. It's worth it, in my experience, to simply do open and print than to use select, but you can look it up and decide.
Also, there are man(ual) pages for both print and open here as well, if you get stuck, you'll want to look at them to help you, and us, understand your question better.
----Asim, known to some as Woodrow. | [reply] [d/l] [select] |
Thank you too. The links are helpful.
| [reply] |