我正在尝试按照this tutorial来获取我自己的代码,它基本上现在将一个值读入一个标量,该标量被推入一个名为states的数组中。但是,它没有像教程中那样正确地散列函数,我相信它是因为数组的内容没有被正确引用。
我试过
foreach (@states)
{
q($_);
}
和
push @states, q($key);
但两者都没有产生必要的输出。目前我的输出显示为
NY, NJ, MI , NJ
使用时
print join(", ", @states);
我希望它显示
'NY', 'NJ', 'MI' , 'NJ'
答案 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'