Just for the fun of it...
package base1arrays;
use strict;
use warnings;
sub TIEARRAY {
my ($pack,$arr) = @_;
bless $arr, $pack;
}
sub FETCH {
my ($arr,$i) = @_;
return $arr->[$i-1];
}
sub FETCHSIZE {
@{$_[0]};
}
sub STORE {
my ($arr,$i,$v) = @_;
$arr->[$i-1] = $v;
return;
}
1;
Test:
use strict;
use warnings;
use feature qw/ :5.10 /;
use base1arrays;
my @orig = qw/1 2 3 4 5/;
tie my @arr, 'base1arrays',\@orig or die $!;
say for (1..@arr);
# "negative" (< 1) index also works
say $arr[0]; # Prints 5