On 24 Oct 2005 at 11:48, Ovid wrote: > > I am trying to access the parameter list from a form. I keep getting > > a "Not an ARRAY reference at (eval...)". The error seems to refer to > > > > my @names = $q->param; > > I suspect you're off by a couple of lines: > > my @names = $q->param; > my $params = Vars; > > my $len = @{$params}; # $params should be a hashref > > Vars() returns a hashref, not an array ref. Dohh. Yes reading that paragraph more clearly now. I guess I need a slice of the hash ref??
I still get the error if I remove those lines: 1 #!/usr/bin/perl -w 2 3 use strict; 4 5 use CGI qw\standard cgi-lib\; 6 use CGI::Carp qw(fatalsToBrowser); 7 8 $CGI::POST_MAX = 1024 * 1000; # Set limit to 1MB 9 10 11 my $q = new CGI; 12 13 my @names = $q->param; 14 #my $params = Vars; 15 #my $len = @{$params}; ....snip Software error: Not an ARRAY reference at (eval 33) line 12. If I do it the other way: 3 #use strict; 4 5 use CGI qw\standard cgi-lib\; 6 use CGI::Carp qw(fatalsToBrowser); 7 8 $CGI::POST_MAX = 1024 * 1000; # Set limit to 1MB 9 10 11 my $q = new CGI; 12 13 #my @names = $q->param; 14 my $params = Vars; 15 my $len = @{$params}; ...snip It runs without error. So I am not sure why the param list is failing - I have to suspect that it is the content of the file upload as it works if I pass the script a url type string on the command line. Becuase it > separates values with null bytes, you run the risk of exposing you code > to a security hole known as the "null byte hack". I explain the latter > in lesson three of my CGI course: > http://users.easystreet.com/ovid/cgi_course/lessons/lesson_three.html Wasn't aware of this. The script, as I said, tries to deal with a file upload so the taint part of this articles is very helpfully I only tried to use Vars because I was failing to fetch the param list with $q->param. It was just another way of tring to get the params but I obviously have some work to do there. > Cheers, > Ovid Thank you. Don't supose you have any suggestion on how to create a hash slice of the input field names?? -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>