2013-03-05 88 views
-2

的我是很新,Perl的。我正在写一个CGI,调用,调用其他子程序和显示HTML子程序,在第二调用的子程序我执行mysql的SELECT语句,并设置其与fetchrow_array数组。我将该数组返回到显示HTML的子例程。的Perl我如何可以声明标量变量(我的)循环之外,增加内循环标量,并用增加的变量名外环线

my @agentval = &GetAgent(); 
my $agentval1; 

foreach (@agentval) { 
    $agentval1 = $_; 
} 

我说出我的变量,然后尝试打印erray的每个值到一个标量,但没有宣布所有26个标varriables。我正在使用这些变量来设置显示的CGI上的字段值。

我想我可以用

my @agentval = &GetAgent(); 
my $agentval1; 

foreach (@agentval) { 
    $agentval1 = $_; 
    $agentval1++; 
} 

我得到实现这一点需要在$ agentval1($ agentval2 ... n)的

就像我说的什么后明确包的名字,我是总新手。提前致谢!

+0

您可以在循环中将变量范围如下:'for my $ agentval(@agentval)'。 – squiguy 2013-03-05 22:13:45

+0

我知道这是不是问题的问题,但有你使用CGI某种原因?当然,有些情况下你必须(遗留代码),但如果没有的话,你可以看看Perl提供的任何现代框架。我更喜欢[Mojolicious](http://mojolicio.us)。 – 2013-03-06 02:11:50

回答

2

要“增量变量名”有可能在Perl,甚至很容易做到。但这种工作很少是正确的方法。

你有一个Perl数组〜26个值称为@agentval,并想将它们装入26个相关的标量。嗯,你已经这样做了,因为数组仅仅是一个标量的集合。当你想访问一个特定的值,使用$array[index]符号:

print "<input type='text' name='field10' value='$agentval[9]'>\n"; 

这里,$agentval[9]指的是10元(因为指数0是一个数组的第1个要素,因为它在许多其他语言)的数组@agentval

+0

谢谢!这是我需要的。爱这个地方! – kyle 2013-03-05 23:04:32

0

你们是不是要组成一个变量,数组@agentval的所有内容?在这种情况下,改变foreach循环:

foreach (@agentval) { 
    $agentval1 .= $_; 
}