Wenn man sich Arrays anlegt, deren Indizes nicht mit 0 beginnen, ist man selber schuld und sollte wissen, was man tut. Untergejubelt kann man so ein Array jedenfalls nicht bekommen, denn
perlvar, $[ sagt: "[...] As of release 5 of Perl, assignment to $[ is treated as a compiler directive, and cannot influence the behavior of any other file. [...]"
Was auf jeden Fall auch mit komisch indizierten Arrays gilt, ist die Identität
scalar(@array) == $#array - $[ + 1
.
When C++ is your hammer, every problem looks like your thumb.