我正在遍历一个查询,并且试图创建一个动态的qw数组。
my $f_name_string = '';
while($sth->fetch)
{
$f_name_string.=$fname.=" "
}
$sth->finish();
my @FNAME_ORDER = (qw('$f_name_string'));
print("@SENSOR_ORDER");
打印'$f_name_string'
答案 0 :(得分:4)
qw
不插值。而且我不知道您为什么通过使用$fname
而不是$fname .= ' '
向$fname . ' '
添加空格。
while ($sth->fetch)
{
$f_name_string .= $fname . ' ';
}
更有意义,但更有意义的是首先不要创建字符串:
my @FNAME_ORDER; # why all uppercase anyway?
while ($sth->fetch)
{
push @FNAME_ORDER, $fname;
}
$sth->finish();
这更有意义。如果要打印出来,或者以后创建一个用空格分隔的字符串,则比分隔空格更容易做到(如果任何$fname
中可能有空格)。
答案 1 :(得分:3)
qw( foo bar )
是
的缩写split ' ', q( foo bar ) # q() = Single quotes, doesn't interpolate.
因此您可以使用
my @fname_order = split ' ', $f_name_string;
但是直接填充数组会更有意义。
my @fname_order;
while($sth->fetch) {
push @fname_order, $fname;
}