在下面的代码片段中,是否有任何1知道$;
(第一个拆分函数参数)是什么:
local(@a) = ();
local($i) = 0;
for ($i = 0; $i < $d; $i++) {
@a = split($;, @b[$i]);
$c = @a[0];
}
除了for循环外,脚本中找不到任何标量。
感谢任何帮助。
答案 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。
中