-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

これはperldataに文書化されています:

配列とスライスは、要素を$"変数 ("use English ;" が指定されている場合は $LIST_SEPARATOR )で指定された区切り文字 (デフォルトではスペース) で結合することにより、二重引用符で囲まれた文字列に補間されます。

于 2012-07-19T11:09:22.430 に答える
7

perldoc perlvarを参照してください

  • $LIST_SEPARATOR
  • $"

配列または配列スライスが二重引用符で囲まれた文字列または などの同様のコンテキストに補間される場合/.../、その要素はこの値で区切られます。デフォルトはスペースです。

于 2012-07-19T11:08:37.637 に答える
4

のデフォルト値$"はスペースであり、のデフォルト値$,は空の文字列であるためです。

あなたはperlvarでPerlのすべての特別な変数について読むことができます。

于 2012-07-19T13:17:17.163 に答える