将文本块从网页传递到perl脚本,然后传回Web

时间:2011-04-02 07:21:14

标签: html perl cgi

我正在尝试执行以下操作。

从网站获取用户在TEXTAREA FORM中输入的文本块,并将其传递给perl / cgi脚本,该脚本在每行之前添加行号。例如:

diet coke
potato chips
gelato

会变成

1 diet coke
2 potato chips
3 gelato

我知道如何将单个值或一堆值传递给perl脚本,但是当我尝试使用foreach(@array)添加行号时,它不起作用。想知道怎么做。

我的html文件是

<HTML>
<BODY>

<FORM ACTION="/cgi-bin/splitfoods.pl">
  <P>What did you eat today? <BR><TEXTAREA NAME="value" ID="value" style="width:900px;height\
:700px;background-color:#FFF8DC;font-size:20px">
    </TEXTAREA>

<P><INPUT TYPE="SUBMIT" VALUE="Submit">
</FORM>

</BODY>
</HTML>

和cgi文件(来自matthewh)

#!/usr/bin/perl

use CGI;
use CGI qw(:standard);


$query = new CGI;

@foods = split('\n',$query->param("value"));


# -- HTML STUFF --
print header;
print start_html;
for($i=1; $i<=@foods; $i++) {
    print "$i @foods[$i-1]";
    print "<br>";
}
print end_html;

请求看起来像

cgi-bin/splitfoods.pl?value=diet+coke%0D%0Apotato+chips%0D%0Agelato

由于

2 个答案:

答案 0 :(得分:2)

@foods = split('\n',$query->param('food'));

for($i=1; $i<=@foods; $i++) {

   print "$i @foods[$i-1]\n";

}

答案 1 :(得分:2)

这有点清洁,不太可能在边缘情况下崩溃。此外,编号是HTML而不是网络更自然。您真的应该阅读CGI的整个文档,并始终使用警告和严格启动代码。

use strict;
use warnings;
no warnings "uninitialized";
use CGI ":standard";

# Scalar/array context matters with param()!
my $food = param("value");
my @foods = split /\n/, $food;

print
    header(),
    start_html(),
    ol(li( \@foods )),
    end_html();