perl哈希声明错误

k4t*_*sis -1 perl hash

我是perl的新手,似乎无法找到为什么这个片段给我500错误.

#!/usr/bin/perl
use strict;
use warnings;
use CGI::Carp qw( fatalsToBrowser );

my ($distance, $weight, $total_gas, $mph, $buffer, $pair, @pairs, $value, $form, $name);
our %FORM = ();

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

@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;
    $FORM{$name} = $value;
}
Run Code Online (Sandbox Code Playgroud)

我试过的一切%FORM = ();都给了我变量声明错误.

scr*_*ola 9

你确定@pairs包含你期望的值(即它们是用"="分割的名称值对吗?很可能没有定义$ name,你不能将未定义的密钥对添加到散列中.为什么您使用STDIN从查询字符串中读取值?尝试:

my $q = CGI->new;
my @keys = $q->param;
my %FORM;
foreach my $name (@keys)
{
    my $value = $q->param($name);
    $FORM{$name} = $value;
}
Run Code Online (Sandbox Code Playgroud)

要么

my $q = CGI->new;
my %FORM = $q->Vars;
Run Code Online (Sandbox Code Playgroud)

http://perldoc.perl.org/CGI.html