Как узнать какая версия Perl библиотеки установлена

Есть множесто способов выяснить какая версия Perl библиотеки установлена.

Переменная $VERSION

Самый стандартный способ — это вывести значение переменной $VERSION. Вот пример:

$ perl -MMojolicious -E 'say $Mojolicious::VERSION'
7.01

Тут используется однострочник Perl. С помощью ключа -M мы подключаем библиотеку Mojolicious, а потом выполняем код, который передан ключу -E. Этот код выводит на экран значение переменной $VERSION в пакете Mojolicious.

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

Но неудобно что нужно много писать. Приходится 2 раза указывать название библиотеки.

Использование специальных скриптов

На CPAN существует куча скриптов, которые созданы специально для решения этой задачи. Все они делают приблизительно одно и то же.

Очень удобно что нужно набрать короткую команду для того чтобы выяснить версию уставнолвенной библиотеки, но неудобно что приходится ставить что-то дополнительное с CPAN. Иногда необходимо выяснить версию библиотеки на каком-нибудь сервере и на него не хочется ставить ничего дополнительно.

Исользование хака с версией

И есть совершенно гениальное решение. Пишем "use НАЗВАНИЕ_БИБЛИОТЕКИ КАКОЕ-НИБУДЬ_ЧИСЛО":

$ perl -e 'use Mojolicious 123'
Mojolicious version 123 required--this is only version 7.01 at -e line 1.
BEGIN failed--compilation aborted at -e line 1.

Тут используется фича use — можно указать какую версию библиотеки нужно подключить. Мы указываем како-то большое число и Perl ругеается что библиотеки такой версии нет, но при этом говорит ровно то что нам нужно — какая версия библиотеки установлена.

Это не такое удобное решение как со специальным скриптом, но зато это работает из коробки — ничего ставить не нужно, а набирать тут нужно меньше чем в cлучае с $VERSION.

Иван Бессарабов
ivan@bessarabov.ru

8 июля 2018

Этот текст есть и на английском языке