khi nghi ngờ, 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
tôi nghi ngờ bạn muốn sử dụng offsets tiêu cực, tôi nghĩ rằng bạn muốn sử dụng offset 0 và kích thước của mảng trừ một (hay còn gọi là chỉ số cuối cùng)
$ perl -le " print for splice @ARGV, 0, $#ARGV-1 " a b c
a
Rất tiếc.$ # Argv là chỉ số cuối cùng, chứ không phải $ # argv -1, vì vậy
$ perl -le " print for splice @ARGV, 0, $#ARGV " a b c
a
b
nhưng nếu bạn vẫn muốn có một số số học bạn có thể sử dụng @ARGV, nguyên nhân trong bối cảnh vô hướng của nó kích thước của mảng
$ perl -le " print for splice @ARGV, 0, @ARGV-1 " a b c
a
b
Lợi ích phụ của việc sử dụng bù trừ không âm với mối nối? Nó không chết khi mảng trống
$ perl -le " print for splice @ARGV, 0, 10 "
Sử dụng quá nhiều của 'printf' có khi' print' sẽ đủ. – TLP
Có phải cách để hiểu cái nhìn tích cực của bạn như thế này không ?: nội dung trong '()' được thực hiện trước tiên, và bởi vì '. *' Là tham lam nó sẽ tìm thấy '.' cuối cùng và tất cả' .' Regex gặp trên đường của nó được thay thế bằng không có gì? –
@SandraSchlichting Không, regex sẽ tìm thấy một khoảng thời gian, và nhìn về phía trước sẽ khẳng định rằng có ít nhất một khoảng thời gian ở đâu đó phía trước. Khi xác nhận không thành công, bạn sẽ tìm thấy khoảng thời gian cuối cùng. – TLP