arybase3perl
Set indexing base via $[
Usage
$[ = 1;@a = qw(Sun Mon Tue Wed Thu Fri Sat);print $a[3], "\n"; # prints Tue
Overview
This module implements Perl's $[ variable. You should not use it directly.
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 lexical scope.
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:
$array[$element]@array[@slice]$#array(list())[$slice]splice @array, $index, ...each @arraykeys @arrayindex $string, $substring # return value is affectedpos $stringsubstr $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 inconsistently.
Releases
3 releases since Debian 8 (Jessie); the text changed 2 times.