在Web开发中,HTML表单是收集用户输入的主要方式,而Perl CGI脚本是处理这些表单数据的传统方法之一。将数组从HTML表单传递给Perl CGI脚本需要特定的命名约定或编码方式。
这是最直接的方法,通过为多个表单元素赋予相同的名称来创建数组。
HTML表单示例:
<form action="/cgi-bin/process.cgi" method="post">
<input type="text" name="items" value="item1">
<input type="text" name="items" value="item2">
<input type="text" name="items" value="item3">
<input type="submit" value="Submit">
</form>
Perl CGI脚本处理:
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
my $cgi = CGI->new;
my @items = $cgi->param('items');
print $cgi->header('text/plain');
print "Received items:\n";
print "$_\n" for @items;
对于复杂数据结构,可以先将数组编码为JSON字符串。
HTML表单示例:
<form action="/cgi-bin/process.cgi" method="post">
<input type="hidden" name="items_json" value='["item1", "item2", "item3"]'>
<input type="submit" value="Submit">
</form>
Perl CGI脚本处理:
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use JSON;
my $cgi = CGI->new;
my $json_str = $cgi->param('items_json');
my @items = @{decode_json($json_str)};
print $cgi->header('text/plain');
print "Received items:\n";
print "$_\n" for @items;
HTML表单示例:
<form action="/cgi-bin/process.cgi" method="post">
<input type="text" name="items_csv" value="item1,item2,item3">
<input type="submit" value="Submit">
</form>
Perl CGI脚本处理:
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
my $cgi = CGI->new;
my $csv_str = $cgi->param('items_csv');
my @items = split(/,/, $csv_str);
print $cgi->header('text/plain');
print "Received items:\n";
print "$_\n" for @items;
问题:为什么我的Perl CGI脚本接收不到数组数据?
$cgi->param
方法正确获取参数问题:如何处理多维数组?
问题:表单提交后出现乱码?
没有搜到相关的沙龙