免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2344 | 回复: 2
打印 上一主题 下一主题

CGI传递二(N)维数组新思路 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-07 15:24 |只看该作者 |倒序浏览
前几天看了几位前辈讨论CGI传递数组的问题的文章.发现的确好用.

最近写程序希望CGI能传递二维数组,我试过用上面的方法,结果失败.可能是我的用法错误,希望有高手可以指点下.

想了半天,觉得二维数组是否可以把@arr[m][n]的第一个下标放到数组名字里,变成@arrm[n],这样二维数组不就变成一维数组了么.

尝试写了下代码,发现效果不错.

代码写的很难看,只求效果,高手见笑了.


1.pl
#!/usr/bin/perl -w


use CGI;

$q=new  CGI;
$n=1;
$m=1;

$num1=6;                             #定义行数

$num2=8;                             #定义列数
for $x (1..$num1) {                  #定义一个一维数组@arr1,@arr2..,每个$arr$x一个数组的引用
    $m=1;
    $arrstr="arr$x";
    @{$arrstr};
    for $y (1..$num2) {
        
        ${$arrstr}[$y]=10*$n+$m;
        
        $m++;
    }
    $n++;
}

print    $q->header(-charset=>"GB2312"),
        $q->start_html(),
        $q->start_form(-method=>"post",-action=>"2.pl");
foreach  $nn (1..$num1) {            #提交数组变量
        $arrstr="arr$nn";
        print $q->hidden(-name=>"rec$nn",-value=>\@{$arrstr});
        print "rec$nn,$arrstr<br>";  
}
print $q->hidden(-name=>num,-value=>"$num1");
                                     #将一维数组的个数,即"m"提交给下一页面
        foreach $x (1..$num1) {      #打印数组
            foreach $y (1..$num2) {
                $arrstr="arr$x";
                print "${$arrstr}[$y] ";
                $y++;
            }
            print "<br>";
            $x++;
        }
print   $q->submit(),
        $q->end_form(),
        $q->end_html;







2.pl
#!/usr/bin/perl -w


use CGI;

$q=new CGI;
print $q->header;
print "Get array from CGI<br>\n";
my $params = $q->Vars;
$num=$q->{'num'};
foreach $x (1..$num) {
    $tmp="rec$x";
    my @myarray = split "\0", $params->{"$tmp"};
    print "@myarray<BR>";
}




print $q->end_html;



[ 本帖最后由 dong_kof 于 2008-7-7 15:38 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-07-07 17:28 |只看该作者
刚开始学用perl CGI编程,看不懂,楼主有什么好的教程推荐吗?
我也从网上找了一些教程,好像都是比较老的教程,输出html代码时都用here文档形式,
用面向对象的方法,代码会简洁一些吧,可是找不到这方面的教程

论坛徽章:
0
3 [报告]
发表于 2008-07-07 19:16 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP