是否有任何 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]
反而。使用前导@
,它们是单元素数组切片,但是使用$
,它们是简单的标量。