Perl:为什么双引号在打印时会增加额外的空间?

smw*_*dia -3 perl

我希望以下2张照片是相同的.

@a=(a..z);
print "@a\n";
print @a;
Run Code Online (Sandbox Code Playgroud)

但实际上,它给了我这个:

a b c d e f g h i j k l m n o p q r s t u v w x y z
abcdefghijklmnopqrstuvwxyz
Run Code Online (Sandbox Code Playgroud)

为什么多余的空间?

我正在使用ActivePerl for Windows.

更新

通过以下2个答案,我想出了这个:

use English;
$LIST_SEPARATOR="*";
@a=(a..z);
print "@a\n";
Run Code Online (Sandbox Code Playgroud)

它给了我这个:

a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z
Run Code Online (Sandbox Code Playgroud)

too*_*lic 7

perldoc perlvar

  • $LIST_SEPARATOR
  • $"

当数组或数组切片内插到双引号字符串或类似的上下文中时/.../,其元素由此值分隔.默认是一个空格.


Eug*_*ash 7

这在perldata中有记录:

通过将元素与$"变量($ LIST_SEPARATOR,如果"使用英语 ;"指定)中指定的分隔符连接,将数组和切片插入到双引号字符串中,默认为空格.