如何才能将qw()的行为更改为换行符?

Bor*_*pen 1 perl

我的代码看起来像这样:

my @street = qw(
examplestreet
example street
);
foreach my $str (@street) {
    print "$str\n";
}
Run Code Online (Sandbox Code Playgroud)

输出很明显

examplestreet
example
street
Run Code Online (Sandbox Code Playgroud)

但我希望它是

examplestreet
example street
Run Code Online (Sandbox Code Playgroud)

问题:我可以修改qw()so 的行为,它只用换行符分隔,而不是用空格分隔吗?

Ps: 为什么我这样做:获得了大量条目,最简单的方法就是将它们逐行复制粘贴到代码中.这只是一个小小的剪辑,不值得任何努力.如果我找不到解决方案,我将为数据制作单独的文件并将其读入脚本.但捷径会很棒!(或者我应该尝试一下__DATA__吗?不知道如何实现这一点......)当前的Perl是v5.20.1

cho*_*oba 10

您无法更改行为qw,但您可以使用HERE文档:

my @streets = split /\n/, << '__LINES__';
examplestreet
example street
__LINES__

print "<$_>\n" for @streets;
Run Code Online (Sandbox Code Playgroud)

HERE文档始终是单个字符串,因此您必须将其拆分为换行符.

使用DATA也可能,但只有当只需要一个这样的部分时(并且你不想使用Data :: Section):

my @streets = <DATA>;
chomp @streets;  # This time, we have to remove the newlines from the strings.
print "<$_>\n" for @streets;

__DATA__
examplestreet
example street
Run Code Online (Sandbox Code Playgroud)

  • @ikegami:嗯,**你**可以:-) (2认同)