在perl中为数组内的所有元素添加引号

时间:2015-03-31 22:53:14

标签: arrays perl

我正在尝试按照this tutorial来获取我自己的代码,它基本上现在将一个值读入一个标量,该标量被推入一个名为states的数组中。但是,它没有像教程中那样正确地散列函数,我相信它是因为数组的内容没有被正确引用。

我试过

foreach (@states)
{
      q($_);
} 

push @states, q($key);

但两者都没有产生必要的输出。目前我的输出显示为

NY, NJ, MI , NJ

使用时

print join(", ", @states);

我希望它显示

 'NY', 'NJ', 'MI' , 'NJ'

3 个答案:

答案 0 :(得分:6)

获取状态,将它们映射到带引号的字符串,用逗号连接:

my @states = qw( NY NJ MI );
print join ', ', map "'$_'", @states;

答案 1 :(得分:1)

另一种方式:

use strict;
use warnings;

my @states = qw/ NY NJ MI NJ /;
my $output = join ', ', map qq/'$_'/, @states;

print $output;

将导致单引号元素的格式列表(字符串),每个元素都按您期望的方式分隔。

'NY', 'NJ', 'MI', 'NJ'

答案 2 :(得分:0)

要在值周围添加引号,可以使用双引号字符串插值:

"'$_'"

或者您可以使用字符串连接:

"'".$_."'"

因此,您可以按如下方式编写foreach循环:

foreach (@states) {
    $_ = "'$_'";
}

请注意,必须指定$_,否则循环体不起作用(q($_);代码就是这种情况)。

完整演示:

use strict;
use warnings;

my @states = qw(NY NJ MI NJ);

foreach (@states) {
    $_ = "'$_'";
}

print(join(', ', @states ));

'NY', 'NJ', 'MI', 'NJ'