将网页中的文本块传递给perl脚本,然后返回到网页
我正在尝试执行以下操作。将网页中的文本块传递给perl脚本,然后返回到网页
获取用户在网站上输入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<[email protected]; $i++) {
print "$i @foods[$i-1]";
print "<br>";
}
print end_html;
请求看起来像
cgi-bin/splitfoods.pl?value=diet+coke%0D%0Apotato+chips%0D%0Agelato
感谢
@foods = split('\n',$query->param('food'));
for($i=1; $i<[email protected]; $i++) {
print "$i @foods[$i-1]\n";
}
这是一个更清洁,不太可能打破边缘情况。此外,编号是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();
谢谢。有没有办法让我使用在perl文件输出中包含一个php头文件。我如何让cgi脚本包含一个splash标题或图像?谢谢 – racket99 2011-04-02 20:30:40
@ racket99:真的,如果你已经在运行PHP,那么没有 这样做的理由。我个人\t更喜欢Perl,但\t PHP是 容易和强大的CGI。如果您觉得您必须这样做,您可以使用模块[PHP](http://search.cpan.org/perldoc?PHP)从Perl运行PHP 。如果你想用Perl CGI做更多的事情,它会做你想做的任何事情,只需检查文档。我建议学习类似[Template](http://search.cpan.org/perldoc?Template)的内容。 CGI是一把不错的瑞士军刀,但它对于“严肃”的代码并不理想。 – Ashley 2011-04-02 21:39:35
你需要添加'$ query = new CGI;' – 2011-04-02 07:41:11