Hello Again,
Below is the slimmed down script (script1.pl) to reproduce the same error. This script is supposed to accept form input of all types (char, boolean, numeric, etc). Couple things to note: Neither edit changed the error message in error_log nor prevented the OK msg from popping up (and I did restart httpd). Bummer. Also, I changed the script to not accept input (see script2.pl) - just run through a loop and put something onto the screen - and that worked fine.
In doing that it became apparent my problem has something to do with the $#in in the foreach statement: foreach $i (0 .. $#in) { ...}
Lastly, to simulate the data being passed into it I added onto the url
...... sec/script1.pl?First_Name=Adolph&Last_Name=Torres
and found the "" in the error_log filled in with the incoming data - all of it as a single string apparently.
Thank You for the quick response - I know you guys are very busy - It was and is very appreciated.
Best Regards,
Adolph Torres
--------------------------
script1.pl
--------------------------
#!/usr/bin/perl -w
print "Content-Type: text/html\n\n";
use strict;
our $in;
our $key;
our $val;
our $i;
our @listing;
our @in;
print "Content-Type: text/html\n\n";
use strict;
our $in;
our $key;
our $val;
our $i;
our @listing;
our @in;
local (*in) = @_ if @_;
local ($i, $key, $val);
local ($i, $key, $val);
if ( $ENV{'REQUEST_METHOD'} eq "GET" ) {
$in = $ENV{'QUERY_STRING'};
} elsif ($ENV{'REQUEST_METHOD'} eq "POST") {
$in;
read(STDIN,$in,$ENV{'CONTENT_LENGTH'});
} else {
$in;
$in = ( grep( !/^-/, @ARGV )) [0];
$in =~ s/\\&/&/g;
}
@in = split(/&/,$in);
print<<PRT1;
<HTML><BODY>
<table border="1">
<tr><th>Some</th><th>Values</th></tr>
PRT1
foreach $i (0 .. $#in) {
# Convert plus's to spaces
$in[$i] =~ s/\+/ /g;
# Split into key and value.
($key, $val) = split(/=/,$in[$i],2);
print<<PRT2;
<tr><td>$key</td>
<td>$val</td></tr>
PRT2
}
print<<PRT3;
</table></body></html>
PRT3
$in = $ENV{'QUERY_STRING'};
} elsif ($ENV{'REQUEST_METHOD'} eq "POST") {
$in;
read(STDIN,$in,$ENV{'CONTENT_LENGTH'});
} else {
$in;
$in = ( grep( !/^-/, @ARGV )) [0];
$in =~ s/\\&/&/g;
}
@in = split(/&/,$in);
print<<PRT1;
<HTML><BODY>
<table border="1">
<tr><th>Some</th><th>Values</th></tr>
PRT1
foreach $i (0 .. $#in) {
# Convert plus's to spaces
$in[$i] =~ s/\+/ /g;
# Split into key and value.
($key, $val) = split(/=/,$in[$i],2);
print<<PRT2;
<tr><td>$key</td>
<td>$val</td></tr>
PRT2
}
print<<PRT3;
</table></body></html>
PRT3
------------------------------------
script2.pl
------------------------------------
#!/usr/bin/perl -w
print "Content-Type: text/html\n\n";
use strict;
print "Content-Type: text/html\n\n";
use strict;
our $i;
our @key=("1","2","3","4","5");
our @val=("a","b","c","d","e");
our @key=("1","2","3","4","5");
our @val=("a","b","c","d","e");
print<<PRT1;
<table border="1">
<tr>
<th>Some</th><th>Values</th>
PRT1
foreach $i (0 .. 4) {
our @listing = ($key[$i],$val[$i]);
print<<PRT2;
<tr><td>$listing[0]</td>
<td>$listing[1]</td></tr>
PRT2
}
print<<PRT3;
</tr>
</table>
</body>
</html>
PRT3
<table border="1">
<tr>
<th>Some</th><th>Values</th>
PRT1
foreach $i (0 .. 4) {
our @listing = ($key[$i],$val[$i]);
print<<PRT2;
<tr><td>$listing[0]</td>
<td>$listing[1]</td></tr>
PRT2
}
print<<PRT3;
</tr>
</table>
</body>
</html>
PRT3
--- Original Message -----
From: Geoffrey Young
To: Stas Bekman
Sent: 8/21/2003 5:44:56 AM
Subject: Re: ModPerl2/Apache2 - Error handling return codes - RegistryCooker.pm:"Argument "" isn't numeric ...& bottom of web page say: OK the server encounteredan internal .....
>
> unrelated, please try to change line 155 to be:
>
> my $new_status = $self->{REQ}->status($old_status || Apache::OK);
if you're going to do that it should be Apache::HTTP_OK (200).
--Geoff
