Как получить номер версии Perl DateTime :: Format :: DateManip из командной строки? - PullRequest
3 голосов
/ 25 января 2010

Я использую это из командной строки:

perl -MDateTime::Format::DateManip -le 'print $Some::Module::VERSION'

а вернуть только пустую строку, есть мысли?

Ответы [ 2 ]

4 голосов
/ 25 января 2010

Это псевдокод, Some не установлен, поэтому он просто печатает undef с флагом -l, например perl -le'print undef;

Для доказательства включите предупреждения с -w

$ perl -MDateTime::Format::DateManip -wle 'print $Some::Module::VERSION'
Use of uninitialized value $Some::Module::VERSION in print at -e line 1.

Замените Some::Module на модуль, версию которого вы хотите.

Также просто для удовольствия;)

Perl Shorthands для тестирования номеров версий

Это быстрые способы получения номеров версий с использованием синтаксиса use <module> <version> и голосового отклонения perl версий, которые недостаточно новы.

Все это эквивалентно созданию сценария perl с use DateTime 9999;

$ perl -MDateTime\ 9999
DateTime version 9999 required--this is only version 0.51.
BEGIN failed--compilation aborted.

Тем не менее, эта мода не кроссплатформенная, потому что вы просто говорите bash выйти из пространства. Это не работает в Windows cmd, для этого вам придется

$ perl -M"DateTime 9999"
DateTime version 9999 required--this is only version 0.51.
BEGIN failed--compilation aborted.

Здесь вы просто помещаете его в кавычки - это говорит cmd отправлять все это в качестве аргумента в perl, и он выполняет ту же работу.

2 голосов
/ 25 января 2010

Если вы часто этим занимаетесь, вы можете загрузить и установить pmvers из CPAN. Сценарий избавит вас от необходимости вводить потенциально длинное имя модуля дважды:

pmvers DateTime::Format::DateManip
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...