是否有任何 1 知道$;以下代码片段中的(第一个拆分函数参数)是什么:
local(@a) = ();
local($i) = 0;
for ($i = 0; $i < $d; $i++) {
@a = split($;, @b[$i]);
$c = @a[0];
}
除了在 for 循环中之外,在脚本中的任何位置都找不到标量。
任何帮助表示赞赏。
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]
反而。使用前导@,它们是单元素数组切片,但是使用$,它们是简单的标量。