Обновление perl с 5.6 до 5.24

в настоящее время мы используем 5.6 версию perl в нашей организации, наряду с MySQL и Apache, но теперь клиент хочет обновить perl до v5.24.

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

я поискал, но не нашел ничего интересного для перехода от 5,6 до 5.24.

желательно ли перейти от этой гораздо более низкой версии к продвинутому уровню.

4 ответов


если вы идете в CPAN для выбранной версии вы переходите к (в вашем случае 5.24.0 Perl 5.24.0), и посмотрите вниз в разделе документации есть куча perlXXXdelta ссылки. Эти файлы описывают изменения между ревизиями и, что более важно, они детализируют несовместимые изменения. Вы также можете найти эти онлайн.

версия 5.24.0 детализирует свои изменения в pod/perldelta.pod.

есть ряд заметных различия:

  • 5.8 изменен двоичный формат, поэтому вам нужно перекомпилировать .Модули XS.
  • 5.8 переехал в PerlIO для операций ввода-вывода ядра.
  • 5.8 изменил расширенных символов работы. Это изменило роль use utf8.
  • 5.10 составила unpack() и mkdir() использовать по умолчанию $_
  • 5.10 пенсии $* и $#
  • 5.10 это $AUTOLOAD, printf и sprintf теперь taintable
  • 5.12 переупорядочены @INC разрешить обновление основных модулей
  • 5.12 благословляет дескрипторы файлов в IO::File
  • 5.12 suidperl был сброшен
  • 5.12 устаревший UNIVERSAL->import()
  • 5.14 был другой двоичный изменения incompability
  • 5.14 изменение ссылки на ручки glob.
  • 5.14 local($_) удаляет всю магию из $_
  • 5.14 := стал синтаксис ошибка
  • 5.18 хэш заказ даже менее предсказуем прежде, чем
  • 5.18 \s теперь \cK (вкладка вертикальный)
  • 5.18 readline() С $/ = \N теперь читает N символов, а не N байтов
  • 5.20 do SUBROUTINE(LIST) стала синтаксической ошибкой
  • 5.20 для некоторых структур данных, Data::Dumper выход был изменен
  • 5.24 лексических $_ была изъята
  • 5.24 chdir('') больше никаких изменений каталог для дома

я бы предложил вам подробно изучить эти файлы (это займет вас, учитывая вашу огромную версию bump!). Это особенно важно, если вы хорошо знаете свою базу кода и функции perl, которые она использует. Это должно по крайней мере дать вам представление о потенциальной ямы падает которыми вы можете столкнуться при переходе на более поздние версии.

я бы также добавил, что ответ Бородина стоит прочитать, так как он подробно описывает очень хороший подход к решению усовершенствование. Я полностью согласен с его рекомендациями, особенно с юнит - тестированием-это верный способ повысить уверенность в успехе миграции. Если у вас нет модульных тестов, то это будет отличное время для их внедрения, а также для оправдания времени, потраченного на их создание для вашей организации.


Я думаю, что обучение себя на различия будет полезно, но нет никакого способа, что это возможно, чтобы работать через все Дельта-файлы и проверить все ваши источники для несоответствий

надеюсь, у вас есть модульные тесты для вашего программного обеспечения. Если нет, то поймите теперь, почему они полезны и напишите комплексные тесты для всего, что у вас есть

сделайте вилку в вашей системе управления версиями и добавьте use strict и use warnings 'all' в верхней части каждого источника файл, если они еще не там. Запустите свой набор тестов, пока все не будет компилироваться и отлично работать под Perl v5.5

установить Perl v5.24 на тестовой системе и отрегулируйте свои источники, пока они не пройдут каждый тест

экипаж Perl 5 отлично справился с сохранением обратной совместимости, но почти наверняка будут некоторые потери

когда вы уверены, сделайте новую версию живой. Будет больше неудач, и для каждого из них вы должны написать новый тест в ваш набор тестов

надеюсь, все пройдет хорошо


Если вы посмотрите на страница выпуска для Perl 5.24 на CPAN вы увидите, что документация содержит ряд файлов, называемых "perl5xxxdelta". Это примечания к выпуску для каждой новой версии Perl. Они содержат подробную информацию обо всем, что изменилось с момента предыдущей версии Perl.

5,6 до 5.24-это огромный скачок (около 30 версий!) Я вижу много чтения в вашем будущем!

возможно, в будущем вы поймете, что важность сохранения версий программного обеспечения немного более актуальными : -)


целесообразно ли перейти от этой гораздо более низкой версии к продвинутому уровню.

Абсолютно да. Команда Perl 5 очень усердно работала над удалением ошибок и добавлением функций к каждому выпуску Perl, сохраняя 100% обратную совместимость через каждый выпуск Perl 5

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