$;
在下面的代码片段中是否有任何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
$;
用于多维数组仿真的下标分隔符.如果您将哈希元素称为
Run Code Online (Sandbox Code Playgroud)$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})
默认值
"\034"
与SUBSEP
awk中的相同.如果您的密钥包含二进制数据,则可能没有任何安全值$;
.(助记符:逗号(句法下标分隔符)是半分号.是的,我知道,它非常蹩脚,但$,
已经被用于更重要的事情.)考虑使用perllol中描述的"真实"多维数组.
我们可以猜测为什么它被使用(例如,可能@b
包含一些哈希的键),但知道如何@b
创建将让我们提供更有用的答案.
还要注意@b[$i]
并且@a[0]
应该是
$b[$i]
Run Code Online (Sandbox Code Playgroud)
和
$a[0]
Run Code Online (Sandbox Code Playgroud)
代替.在领先的情况下@
,它们是单元素阵列切片,但是$
,它们是简单的标量.