Подтвердить что ты не робот

Какой современный способ объявить, какую версию Perl использовать?

Когда речь заходит о том, какую версию Perl нам нужно для наших скриптов, у нас есть варианты, о, брат, у нас есть варианты:

use 5.010;
use 5.010_001;
use 5.10.0;
use v5.10;
use v5.10.0;

Кажется, все работает. perlcritic жалуется на всех, кроме первых двух. (Несчастливо, что строки v, похоже, имеют такие недостатки, поскольку Perl 6 ожидает, что вы сделаете use v6; для своих скриптов Perl 6...)

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

4b9b3361

Ответ 1

Есть действительно только два варианта: десятичные числа и v-строки. Какая форма использования частично зависит от того, какие версии Perl вы хотите "поддерживать" с содержательным сообщением об ошибке вместо синтаксической ошибки. (Синтаксис v-строки был добавлен в Perl 5.6.) Принятая наилучшая практика - это то, что perlcritic обеспечивает, - использовать десятичную нотацию. Вы должны указать минимальную версию Perl, необходимую для корректной работы вашего script. Обычно это означает объявление зависимости от языковых функций, добавленных в основной выпуск, например, с помощью функции say, добавленной в 5.10. Вы должны указать уровень патча, если важно, чтобы ваш script работал правильно. Например, некоторые из моего кода задают use 5.008001, потому что это зависит от исправления ошибки, установленной в 5.8.0, которая была исправлена ​​в 5.8.1.

Ответ 2

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

Поскольку я в основном занимаюсь системами сборки, у меня есть постоянная борьба Module::Build internal version.pm, которая не синхронизирована с version.pm в CPAN. Я думаю, что в основном лучше сейчас, но мне лучше подумать.

Лучшей практикой всегда должно быть то, что меньше всего требует ваше внимание, и, конечно же, не уделять больше внимания, чем ценность, которую она возвращает. На мой взгляд, v-струны и пунктирные десятичные знаки были огромным отвлечением без каких-либо дополнительных преимуществ, потратив много времени на программиста, чтобы вернуться к исходной точке.

Я также должен отметить, что Perl:: Critic часто подталкивал сомнительные практики к более высокой цели сокращения способов, которыми люди занимаются. Однако эти методы часто вызывают проблемы, делают их неудовлетворительными. Это один из таких случаев. Более реалистичная передовая практика заключается в том, чтобы не сделать Perl:: Critic соответствие вашей цели. Используйте его там, где это полезно, но в подобных случаях не тратьте на него умственное время.

Ответ 3

"Современный" способ - использовать формы, начинающиеся с v. Однако это не обязательно то, что вы действительно хотите сделать.

Критик жалуется, что более старые версии Perl не поймут и отлично сыграют с формами, начинающимися с v. Однако, если ваша версия Perl поддерживает его, v лучше читать, потому что вы можете сказать:

use v5.10.1;

... а не...

use 5.010_001;

Итак, в документации для use предлагается следующее обходное решение:

use 5.006; use v5.6.1;

NB: Я думаю, что документация здесь ошибается, так как v опущен из примера в perldoc use.

Так как версии Perl, которые не поддерживают синтаксис v, не сработают при первом use, они не смогут перейти ко второму более конкретному и читаемому.