Is there any way to pass the %pform,%gform down the levels without actually manually passing them through?
Yes and no. For example,
package formBreaker;
sub test {
print($CallerPackage::var, $/);
}
package CallerPackage;
our $var;
$var = 'success';
formBreaker->test();
You can, but as you can see, you have to either hardcode the caller's package (bad!) or you have to get the caller's package name using caller and dynamically build the variable name (ugly and bad!). What's wrong with
%pform = formBreaker->breakupForms('post');
or
formBreaker->breakupForms('post', \%pform);
?
| [reply] [d/l] [select] |
For some reason, when I call the %pform = formBreaker->breakupForms(); that routine doesnt recieve anything from STDIN, thus, it has nothing to break up.
| [reply] |
A Reply to myself. I just realized that the routine breakupForms isn't returning a thing!
Heres the code
package formBreaker;
use strict;
sub breakupForms {
my (%pform,%gform);
my $submittype = @_;
#Do the Form {Post} first
read(STDIN, $buffer,$ENV{'CONTENT_LENGTH'});
my @pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
my ($name,$value);
($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%(a-fA-F0-9a-fA-F0-9)/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%(a-fA-F0-9a-fA-F0-9)/pack("C", hex($1))/eg;
if($pform{$name} ne "") {
$pform{$name} = join("\|",$pform{$name},$value);
}
else {
$pform{$name}=$value;
}
}
#breakup form query strings
my @pairs = split(/\&/,$ENV{'QUERY_STRING'});
foreach(@pairs) {
my($name,$value);
($name,$value) = split(/\=/,$_);
$gform{$name}=$value;
}
if($submittype eq "post") {
return %pform;
}
elsif($submittype eq "get") {
return %gform;
}
} #end of sub for breakupForms
1;
| [reply] |
Save yourself some headaches and use CGI. No use reinventing the wheel yet again
| [reply] [d/l] |
How does CGI handle a form where multiple elements are being submitted with the same name, for example a select box with the multiple element activated and the form submits the same name with like 5 different values. Will it overwrite the previous? or does it have something to fix it?
| [reply] |