我对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)
之后的任何内容上显式包名就像我说的,我是一个全新的人。提前谢谢!
答案 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 .= $_;
}