根据 Simon Cozens 的Beginning Perl,\n 应该在 Windows 下的 Perl 中添加静默打印,这在我发现的大多数脚本中都是如此。但是,由于我不知道的原因,Perl 在以下示例中看不到 \n。它显然与括号的使用有关,但我找不到太多信息来理解这些差异。
脚本1
#!usr/bin/perl
#ranges.pl
use warnings;
use strict;
print reverse (1 .. 6), "\n";
输出是
654321
<--
c:\Users\Brenden\desktop\begperl
所以对我来说 \n 被 Perl 读取并导致了一个新的空间。现在
脚本2
#!usr/bin/perl
#ranges.pl
use warnings;
use strict;
print reverse (1 .. 6), "\n";
print reverse qw(1 2 3 4 5 6), "\n";
输出是
654321
<--
654321
C:Users\Brenden\Desktop\Begperl>
对我来说,因为有两个“\n”参数,所以应该有两个空格。我只看到一个。
脚本3
#!usr/bin/perl
#ranges.pl
use warnings;
use strict;
print reverse (1 .. 6), "\n";
print "\n";
输出是
654321
<--
<--
C:\\Users\Brenden\Desktop\Begperl
由于创建了两个空格,这意味着 Perl 不会将两个空格压缩为一个。因此,对我来说,很可能在 script2 中,2 个“654321”之间创建的空间是由于第一个“\n”而第二个“\n”被忽略了。如果脚本 2 中没有忽略第二个“\n”,则输出应该是
654321
<--
654321
<--
C:\\Users\Brenden\Desktop\Begperl
或者
654321
<--
<--
654321
C:\\Users\Brenden\Desktop\Begperl
现在,如果我在第二个打印中添加一个括号。
脚本4
#!usr/bin/perl
#ranges.pl
use warnings;
use strict;
print reverse (1 .. 6), "\n";
print reverse (qw(1 2 3 4 5 6)), "\n";
输出显示
654321
654321
<--
C:Users\Brenden\Desktop\Begperl>
此输出中的第一个“\n”会发生什么?对我的唯一解释是该空间被下一个打印输出占用,其中包括“654321”和一个空格(无论顺序如何)。但这个解释听起来不太对。对我来说,无论是 qw( 1 2 3 4 5 6 ) 还是 (qw(1 2 3 4 5 6),"\n") 传递给反向,在脚本 2,3,4 中我不应该仍然看到 2空格,不管“\n”是否反转?