Perl如何在循环外声明标量变量(my),在循环内增加标量变量,并在循环外使用递增变量名

时间:2013-03-05 22:09:18

标签: mysql perl loops foreach

我对Perl很新。我正在编写一个CGI,调用一个调用另一个子例程并显示HTML的子例程,在第二个调用子例程中我正在执行一个mysql select语句并使用fetchrow_array将其设置为一个数组。我正在返回该数组显示HTML的子例程。

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

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

我正在声明我的变量然后尝试将erray的每个值打印到标量变量中,但是没有声明所有26个标量变量。我正在使用变量来设置显示的CGI上的字段值。

我以为我可以用

来完成这件事
my @agentval = &GetAgent();
my $agentval1;

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

我需要在$ agentval1($ agentval2 ... n)

之后的任何内容上显式包名

就像我说的,我是一个全新的人。提前谢谢!

2 个答案:

答案 0 :(得分:2)

在Perl中可以“增加变量名称”,甚至可以轻松实现。但这种工作很少是正确的方法。

在名为@agentval的Perl数组中有~26个值,并且您希望将它们加载到26个相关标量中。好吧,你已经这样做了,因为数组只是一组标量。如果要访问特定值,请使用$array[index]表示法:

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

这里,$agentval[9]引用数组@agentval的第10个元素(因为索引0是数组的第1个元素,就像在许多其他语言中一样)。

答案 1 :(得分:0)

您是否尝试使用@agentval数组的所有内容组成变量?在这种情况下,更改foreach循环:

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