в случае сомнений, use diagnostics;
$ perl -Mdiagnostics -le " splice @ARGV, -1 ,0 "
Modification of non-creatable array value attempted, subscript -1 at -e line 1 (#1)
(F) You tried to make an array value spring into existence, and the
subscript was probably negative, even counting from end of the array
backwards.
Uncaught exception from user code:
Modification of non-creatable array value attempted, subscript -1 at -e line 1.
at -e line 1.
$ perl -Mdiagnostics -le " splice @ARGV, -1 ,0 " argv now not empty
Я сомневаюсь, что вы хотите использовать отрицательные сдвиги, я думаю, что вы хотите использовать смещение-и размера массива минус один (также известный как последний индекс)
$ perl -le " print for splice @ARGV, 0, $#ARGV-1 " a b c
a
Ooops.$ # ARGV последний индекс, а не $ # ARGV -1, так
$ perl -le " print for splice @ARGV, 0, $#ARGV " a b c
a
b
, но если вы все еще хотите, чтобы некоторые арифметические операции вы можете использовать @ARGV, потому что в скалярном контексте его размер массива
$ perl -le " print for splice @ARGV, 0, @ARGV-1 " a b c
a
b
Боковое преимущество использования неотрицательных смещений со сращиванием? Он не умирает, когда массив пуст
$ perl -le " print for splice @ARGV, 0, 10 "
Чрезмерное использование 'printf' там, когда' print' будет достаточно. – TLP
Является ли способ понять ваш позитивный взгляд вперед следующим образом: контент в '()' выполняется сначала, а потому, что '. *' Жадный, он найдет последние '.' и все' .''s регулярное выражение встречается на своем пути, которое заменяется ничем? –
@SandraSchlichting Нет, регулярное выражение найдет буквальный период, и прогноз будет утверждать, что есть где-то еще один буквальный период. Когда утверждение не удастся, вы найдете последний период. – TLP