$[ = 1;
@a = qw(Sun Mon Tue Wed Thu Fri Sat);
print $a, "\n"; # prints Tue
This module implements Perl's $[ variable. You should not use it
Assigning to $[ has the compile-time effect of making the assigned
value, converted to an integer, the index of the first element in an
array and the first character in a substring, within the enclosing
It can be written with or without "local":
$[ = 1;
local $[ = 1;
It only works if the assignment can be detected at compile time and the
value assigned is constant.
It affects the following operations:
splice @array, $index, ...
index $string, $substring # return value is affected
substr $string, $offset, ...
As with the default base of 0, negative bases count from the end of the
array or string, starting with -1. If $[ is a positive integer,
indices from "$[-1" to 0 also count from the end. If $[ is negative
(why would you do that, though?), indices from $[ to 0 count from the
beginning of the string, but indices below $[ count from the end of the
string as though the base were 0.
Prior to Perl 5.16, indices from 0 to "$[-1" inclusive, for positive
values of $[, behaved differently for different operations; negative
indices equal to or greater than a negative $[ likewise behaved
Before Perl 5, $[ was a global variable that affected all array indices
and string offsets.
Starting with Perl 5, it became a file-scoped compile-time directive,
which could be made lexically-scoped with "local". "File-scoped" means
the Perl core. The erratic behaviour that occurred with indices
between -1 and $[ was made consistent between operations, and, for
negative bases, indices from $[ to -1 inclusive were made consistent
Error messages that mention array indices use the 0-based index.
"keys $arrayref" and "each $arrayref" do not respect the current value
"$[" in perlvar, Array::Base and String::Base.
perl v5.22.1 2018-11-19 arybase(3perl)
Man Pages Copyright Respective Owners. Site Copyright (C) 1994 - 2019
All Rights Reserved.