Does any 1 have any idea what is $;
(first split function argument) in the following code snippet:
local(@a) = ();
local($i) = 0;
for ($i = 0; $i < $d; $i++) {
@a = split($;, @b[$i]);
$c = @a[0];
}
The scalar is not found any where in the script other than in the for loop.
Any help is appreciated.
Perl's special variables are documented in perlvar
, including $;
$SUBSEP
$;
The subscript separator for multidimensional array emulation. If you refer to a hash element as
$foo{$a,$b,$c}
it really means
$foo{join($;, $a, $b, $c)}
But don't put
@foo{$a,$b,$c} # a slice--note the @
which means
($foo{$a},$foo{$b},$foo{$c})
Default is
"\034"
, the same asSUBSEP
in awk. If your keys contain binary data there might not be any safe value for$;
. (Mnemonic: comma (the syntactic subscript separator) is a semi-semicolon. Yeah, I know, it's pretty lame, but$,
is already taken for something more important.)Consider using "real" multidimensional arrays as described in perllol.
We could guess about why it's being used (e.g., maybe @b
contains some hash's keys), but knowing how @b
is created would let us provide more helpful answers.
Note also that @b[$i]
and @a[0]
should probably be
$b[$i]
and
$a[0]
instead. With the leading @
, they're single-element array slices, but with $
, they're simple scalars.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With