Из первых двух предложений для оператора диапазона , задокументировано в perlop :
Двоичный ".." - это оператор диапазона, который в действительности зависит от контекста. В контексте списка он возвращает список значений, считая (с увеличением на единицу) от левого значения к правому значению. Если левое значение больше правого, возвращается пустой список.
Когда код не работает, разложите его, чтобы увидеть, что происходит. Например, вы бы попробовали оператор диапазона, чтобы увидеть, что он произвел:
my @indices = 1 .. -5;
print "Indices are [@indices]\n";
Когда вы получили пустой список и поняли, что происходит что-то, чего вы не понимаете, проверьте документацию на предмет того, что вы пытаетесь сделать, чтобы убедиться, что он делает то, что, по вашему мнению, должен делать. :)