有疑問時,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
要使用負偏移我懷疑,我想你想使用偏移陣列減去一(也被稱爲最後一個索引)的0和大小
$ 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 2012-03-19 14:27:04
是否理解你的積極預見的方式是這樣的:首先執行'()'中的內容,並且因爲'。*'是貪婪的,它會找到最後一個'.'和所有'.'正則表達式在途中會被替換爲沒有? – 2012-03-19 14:31:19
@SandraSchlichting不,正則表達式會找到一個文字時期,並且前瞻將斷言在更前面的某個地方至少有一個文字時期。當斷言失敗時,你會發現最後一個時期。 – TLP 2012-03-19 14:35:12