Thanks for your replies. I didn't post code initially because I didn't think people would appreciate me dumping the problem directly onto them. But here's the relevant code:
Immediately after the relevant beginning lines, I create three hashes I'll use. %INPUT is the one in question. I haven't got it far enough to know if the other two work. We all know %ENV, and %CFG has values from a config file I load.
my (%INPUT,%CFG,%ENV);
To clean up my "main" program, I dump off the initialization of %INPUT to a subroutine, which I call immediately after my variable declarations (save a few comments in between):
my ($buffer,$name,$value,@pairs,$pair);
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
$name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
$INPUT{$name} = $value;
print "\$INPUT{$name} = $value<br>";
}
That last line was put in to help me see if any of the values are printed. I expected it to at least print "$INPUT{} = " (null for the actual values), but in fact, it didn't print anything.
Even if I put this code immediately after the above "my (...)" code, it still doesn't give me any output.