$;次のコード スニペットの (最初の分割関数の引数) が何かわかりますか?
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})デフォルトはで、 awk
"\034"と同じです。SUBSEPキーにバイナリ データが含まれている場合、 の安全な値がない可能性があります$;。(記憶法: コンマ (構文上の添え字の区切り記号) はセミセミコロンです。ええ、私は知っています。それはかなり不自由ですが、$,すでにもっと重要なことに使用されています。)perllolで説明されているように、「実際の」多次元配列を使用することを検討してください。
なぜそれが使用されているのか (たとえば、@bいくつかのハッシュ キーが含まれている可能性がある) については推測できますが、どのように作成されるかを知ることで@b、より役立つ答えを提供できます。
また、おそらくそうあるべきであること@b[$i]に注意してください@a[0]
$b[$i]
と
$a[0]
代わりは。先頭の@では、それらは単一要素の配列スライスですが、$では単純なスカラーです。
Perl の特殊変数はperlvarにリストされています。