in reply to Re: Re (tilly) 4: Quick Regex question
in thread Quick Regex question

The following quick hack is not particularly good style, but it works here under Linux and I am not doing anything that should be unportable. I am just echoing back your input files, and it handles multiple files.
#! /usr/local/bin/perl -T use strict; use CGI qw(:standard upload); use HTML::Entities; print header(), start_html('Upload Test'), h1('Upload Test'), start_multipart_form(), "Enter how many files to upload: ", textfield("filecount"), br(); for my $i (1..param('filecount')) { print "File $i: ", filefield(-name => "file$i"), br(); } print submit(); for my $file (sort grep /file/, param()) { print p(); my $handle = upload($file); unless (defined($handle)) { if ($file =~ /(\d+)/) { print h3("File request $1 did not return a handle\n"); } next; } print p(), h3("Uploaded $handle"), br(), "<pre>"; print encode_entities($_) while <$handle>; print "</pre>"; }
(For the record I usually avoid writing CGI...don't laugh at what it looks like...)

Replies are listed 'Best First'.
Re: Re (tilly) 6: Quick Regex question
by Stamp_Guy (Monk) on Jan 14, 2001 at 09:44 UTC
    Hey Tilly, I tried it, but all I could get was internal server errors. Is HTML::Entities part of the standard perl distribution? I don't have a clue why it won't work.
      HTML::Entities is off of CPAN so you may not have it. Sorry for not checking. For a quick test you can make the following modification:
      --- files.pl Sat Jan 13 11:31:40 2001 +++ files2.pl Sat Jan 13 20:51:31 2001 @@ -1,7 +1,6 @@ #! /usr/local/bin/perl -T use strict; use CGI qw(:standard upload); -use HTML::Entities; print header(), start_html('Upload Test'), h1('Upload Test'), start_multipart_form(), "Enter how many files to upload: ", textfield("filecount"), br(); @@ -19,6 +18,11 @@ next; } print p(), h3("Uploaded $handle"), br(), "<pre>"; - print encode_entities($_) while <$handle>; + while (<$handle>) { + s/&/&amp;/g; + s/</&lt;/g; + s/>/&gt;/g; + print; + } print "</pre>"; }
      (The solution with the original module is able to handle unexpected input better though.)

      Also it sounds like you have not yet discovered your server error logs. If you are on a Unix-like system it will be something like /var/log/apache/error.log. When you get these internal errors the tail of that will have all sorts of useful information. In similar vein you should try running the CGI script interactively, that can identify many problems.

      Several other good tips are here - highly recommended despite the name. (A little dated now, but good advice nonetheless.)

        Hey Tilly, I got the script to work now (Idiot is the word. I was so tired last night I forgot to set permissions. Duh!). Where is it placing the images though?