我正在尝试执行以下操作。
从网站获取用户在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
由于
答案 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();