什么是Perl的$;变量为?

时间:2010-02-04 17:22:05

标签: perl scalar

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

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

除了for循环外,脚本中找不到任何标量。

感谢任何帮助。

2 个答案:

答案 0 :(得分:13)

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

  

$ SUBSEP

     

<强> $;

     

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

$foo{$a,$b,$c}
     

这真的意味着

$foo{join($;, $a, $b, $c)}
     

但不要把

@foo{$a,$b,$c}  # a slice--note the @
     

表示

($foo{$a},$foo{$b},$foo{$c})
     

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

     

考虑使用perllol中描述的“真实”多维数组。

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

另请注意,@b[$i]@a[0]应该是

$b[$i]

$a[0]

代替。使用前导@,它们是单元素数组切片,但使用$时,它们是简单的标量。

答案 1 :(得分:0)

Perl特殊变量列在perlvar