在Perl动态QW数组中获得意外结果

时间:2019-03-08 18:08:03

标签: arrays perl

我正在遍历一个查询,并且试图创建一个动态的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'

2 个答案:

答案 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;
}