Hi, i'm still battling this one.
THE CGI bit
#! usr/bin/perl -w
use CGI;
print STDOUT $query->header();
print STDOUT $query->start_html( -title=> "results";
-BGCOLOR=>"#ccddff");
# Get the file from the html form
$file_contents = $query->param('file');
# read the file in line by line
while (defined ($line = <$file_contents>)) {
$info = $info.$line;
}
# prints the file contents but loses all tab-delimited formatting.
print STDOUT "$info<P>";
# slurp file into scalar variable
$data = do { local $/; <$info>; };
# the following does nothing
print STDOUT "$data";
Is there another way that i can read in the file but preserve the file format?? Also, why doesn't printing $data work??
cheers | [reply] [d/l] [select] |
Hi there anonymonk, thanks for posting the code. A few comments for you:
- You seem to read in the file just fine. I'm willing to bet the farm that the tab-delimited formatting is still in your $info variable. However, when you print the variable to the browser, it won't display the tabs properly. Your browser should treat all whitespace characters as just spaces, so tab alignment won't work. You can verify this by viewing the source of the output in your browser -- the HTML source should show the tab alignment. I'm sure that if you printed out <pre> tags around the data, it would appear better in the browser output.
- You have a problem when you try to slurp the file contents into $data. More specifically, you try to use the diamond <> operator on a string ($info), which won't work. You can only use this operator on filehandles. This is why nothing was showing up. If you had warnings turned on, you would have seen an error to this effect.
Otherwise, your code looks good. Of course, I would be remiss if I didn't strongly encourage you to use strict and warnings! This is Perl Monks after all!
blokhead
| [reply] |