PERL / CGI-比输入textarea

时间:2016-08-08 15:29:45

标签: html perl cgi

我对perl一点也不熟悉,但对html有一些了解。我目前正在尝试配置来自在线程序的代码,该程序处理从用户输入的文本以计算和输出一些重要的数字,以便对包含本地目录中的文本的大量文件执行相同的操作。问题在于我缺乏对网站代码如何或为何通过寻找&来分割输入文本的理解。和=,因为输入的文本从不包含这些字符,也不包含我的文件。以下是在线计划中的一些代码:

if ($ENV{'REQUEST_METHOD'} ne "POST") { 
    &error('Error','Use Standard Input by METHOD=POST'); 
}

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

if ($buffer eq '') { 
    &error('Error','Can not execute directly','Check the usage'); 
}

$ref = $ENV{'HTTP_REFERER'};

@pairs = split(/&/,$buffer);

foreach $pair (@pairs) {
    ($name,$value) = split(/=/,$pair);
    if ($name eq "ATOMS") { $atoms = $value; }

然后使用这些"对"适当地计算所需的数字。来自用户的输入只是一个名为" ATOMS"的textarea,表单操作是cgi脚本:

<form method=POST action="/path/to/the/cgi/file.cgi">
<textarea name="ATOMS" rows=20 cols=80></textarea>
</form>

我遗漏了html和perl代码的不太重要的细节。到目前为止,我所能做的就是以文本格式从给定目录中的所有文件中获取所有内容,但是当我将其输入到使用textarea中的文本来计算值的脚本中时(到位)变量$ buffer),它不起作用,我怀疑是由于分割代码,它找不到&amp;和=符号。代码如何从在线脚本中获取这些符号,以及如何实现该代码以用于本地文件?如果需要任何其他信息,请告诉我,并提前感谢!

2 个答案:

答案 0 :(得分:2)

编码方案表格使用(默认情况下)通过HTTP的POST数据包含key=value对(因此=),它们由&个字符分隔。

后者对你的表格来说并不重要,因为它只有一个控件。

这在the HTML 4 specification中非常简洁地描述,在the HTML 5 specification中有更详细的描述。

如果您不处理表单中的数据,则应删除所有表单解码代码。

答案 1 :(得分:0)

不确定你从哪里获得该代码,但它是史前的(从上一个千年开始)。

你应该可以用。替换它。

use CGI ':cgi';

my $atoms = param('ATOMS');