我是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 = ();都给了我变量声明错误.
你确定@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
| 归档时间: |
|
| 查看次数: |
376 次 |
| 最近记录: |