什么是Perl的$; 变量为?

Ag.*_*Ag. 9 perl scalar

$;在下面的代码片段中是否有任何1知道什么是(第一个拆分函数参数):

      local(@a) = ();
      local($i) = 0;
      for ($i = 0; $i < $d; $i++) {
         @a = split($;, @b[$i]);
         $c     = @a[0];
      }
Run Code Online (Sandbox Code Playgroud)

除了for循环之外,脚本中没有找到标量.

任何帮助表示赞赏.

Gre*_*con 13

Perl的特殊变量记录在perlvar其中,包括$;

$ SUBSEP

$;

用于多维数组仿真的下标分隔符.如果您将哈希元素称为

$foo{$a,$b,$c}
Run Code Online (Sandbox Code Playgroud)

这真的意味着

$foo{join($;, $a, $b, $c)}
Run Code Online (Sandbox Code Playgroud)

但是不要放

@foo{$a,$b,$c}  # a slice--note the @
Run Code Online (Sandbox Code Playgroud)

意思是

($foo{$a},$foo{$b},$foo{$c})
Run Code Online (Sandbox Code Playgroud)

默认值"\034"SUBSEPawk中的相同.如果您的密钥包含二进制数据,则可能没有任何安全值$;.(助记符:逗号(句法下标分隔符)是半分号.是的,我知道,它非常蹩脚,但$,已经被用于更重要的事情.)

考虑使用perllol中描述的"真实"多维数组.

我们可以猜测为什么它被使用(例如,可能@b包含一些哈希的键),但知道如何@b创建将让我们提供更有用的答案.

还要注意@b[$i]并且@a[0]应该是

$b[$i]
Run Code Online (Sandbox Code Playgroud)

$a[0]
Run Code Online (Sandbox Code Playgroud)

代替.在领先的情况下@,它们是单元素阵列切片,但是$,它们是简单的标量.