in reply to why do CGI's mess everything up???

Sounds strange. What exactly does happen to the data? Can your script print it out or save it to a temp file to verify that it's in the correct format? My hunch is that the uploaded file isn't any different from the files you've been testing with in the non-CGI environment, with the possible exception of end-of-line characters. However, I don't think you'll be able to get much more than stabs in the dark from the monks here unless you can post the relevant file-parsing code from your CGI script.

blokhead

Replies are listed 'Best First'.
Re: Re: why do CGI's mess everything up???
by Anonymous Monk on Dec 13, 2002 at 13:27 UTC
    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
      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