“splice () офсет past end of array” в различных версиях Perl

Сегодня, в моей работе, я написал нечто похожее, в Perl:

my @x = qw( 1 2 3 4 5 );
splice(@x, 10);

и он произвел ошибку:

splice () офсет past end of array at./x line X.

Но в моем личном laptop, нет никакой такой ошибки. Уже я знаю, что легко устранять сообщение (на Английском языке) с no warnings 'misc';, но мой вопрос:

Почему различие между версиями Perl?

В работе, я вижу сообщение с Perl 5.14, и в моей личной команде я это не вижу с Perl 5.20. Когда он это изменил, и почему?

23
задан 23.05.2017, 05:39
2 ответа

Поскольку уже я упомянул, я не использую Perl, но смотря документацию в части ее он говорит следующее:

"Если перемещение - за пределами конца массива, Perl выражает предупреждение, и (Perl) empalma/splice в конце массива."

... If is past the end of the array ОФСЕТ, Perl issues в warning, and splices at the end of the array.

echo я проверил в нескольких версиях и то же самое, по крайней мере, документация они замечают о warning.

Здесь я оставляю ему соединения (на Английском языке);

Согласно предыдущему нормальным является warning, но а следовательно возможно видеть в следующем соединении, не во всех версиях это так и также зависит ВЫ.

http://www.nntp.perl.org/group/perl.perl5.porters/2013/04/msg201134.html

Я думаю, что это происходит между 5.14 и 5.16 в каких-то системах, здесь смоги видеть извещение вируса, но, может быть, также последуйте за Вами в 5.20 ввиду Ваш ВЫ и дело не в том, что он изменил что-то.

https://rt.perl.org / Public / вирус / Display.html? id=117729

13
ответ дан 01.12.2019, 08:18
  • 1
    У тебя есть raz и # 243; n, что предупреждение в этом случае espec и # 237; fico я исчез и # 243; enter 5.14 и 5.16, и что это был decisi и # 243; n обсужденная, чтобы снимать ее и не новый вирус. Она и #250; nica raz и # 243; n, что versi и # 243; n операционной системы он имеет что-то общее aqu и # 237; он, потому что у людей, которые не устанавливают их собственный perls, будет любой versi и # 243; n, что они d и # 233; Ваш ВЫ. – tchrist 05.12.2015, 17:14

я буду прибавляться с частью вопроса, который не был отвечен даже: Почему он изменился?

Я меняюсь, из-за которого намерение этого кода:

my @x = qw( 1 2 3 4 5 );
splice(@x, 3);

он состоит в том, чтобы отсекать ясно array, если он слишком длинный и нет разума, чтобы выражать предупреждение, если у array есть меньше элементов, чем определенного максимума (как в случае, упомянутом в вопросе)

Шрифт (на Английском языке)

9
ответ дан 01.12.2019, 08:18

Теги

Похожие вопросы