9

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

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

除了在 for 循环中之外,在脚本中的任何位置都找不到标量。

任何帮助表示赞赏。

4

2 回答 2

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]

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

于 2010-02-04T17:25:18.067 回答
0

Perl 特殊变量在perlvar中列出。

于 2010-02-04T17:34:17.313 回答