-2

我希望以下 2 个打印件是相同的。

@a=(a..z);
print "@a\n";
print @a;

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

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

为什么要多出空格?

我正在为 Windows 使用 ActivePerl。

更新

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

use English;
$LIST_SEPARATOR="*";
@a=(a..z);
print "@a\n";

它给了我这个:

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
4

3 回答 3

7

请参阅perldoc perlvar

  • $LIST_SEPARATOR
  • $"

当数组或数组切片被插入双引号字符串或类似的上下文(如 )时/.../,其元素由该值分隔。默认为空格。

于 2012-07-19T11:08:37.637 回答
7

这记录在perldata中:

通过将元素与$"变量中指定的分隔符连接起来,数组和切片被插入到双引号字符串中(如果指定了“use English ;”,则为 $LIST_SEPARATOR ),默认为空格。

于 2012-07-19T11:09:22.430 回答
4

因为 for 的默认值$"是一个空格,而 for 的默认值$,是一个空字符串。

您可以在perlvar中阅读有关 Perl 的所有特殊变量的信息。

于 2012-07-19T13:17:17.163 回答