По предположению - ваше регулярное выражение не соответствует, поэтому $r
по-прежнему -1
и у вас пустой массив.
#!/usr/bin/env perl
use strict;
use warnings;
my @list;
$list[-1] = 1;
Дает вам ту же ошибку. Это означает, что:
$_ =~ /^"[0-9]{2,10}"\|"/
Не соответствует первой строке вашего ввода.
Точка отрицательных индексов в массиве является особым случаем - это означает «считать с конца», поэтому $array[-1]
- последний элемент. Но это не имеет смысла, когда у вас есть пустой массив.
Это будет работать , если у вас есть массив, который уже заполнен, но я бы посоветовал, основываясь на логике вашей программы - он не должен , и поэтому установите его до -1
с допущением, что вы будете увеличивать его позже, на самом деле изначально вызывает проблемы.