The index of the first element in an array, and of the first character in a substring. Default is 0, but you could theoretically set it to 1 to make Perl behave more like awk (or Fortran) when subscripting and when evaluating the index() and substr() functions. (Mnemonic: [ begins subscripts.)
As of release 5 of Perl, assignment to
$[ is treated as a compiler directive, and cannot influence the behavior of any other file. (That's why you can only assign compile-time constants to it.) Its use is deprecated, and by default will trigger a warning.
Note that, unlike other compile-time directives (such as strict), assignment to
$[ can be seen from outer lexical scopes in the same file. However, you can use local() on it to strictly bind its value to a lexical block.