Предисловие: Я знаю, как загрузить определенную версию модуля. Это не то, что мне нужно.В Perl, как я могу определить версию модуля для определенного модуля, который уже загружен?
Я пишу сценарий для получения некоторых текстовых/простых данных, отформатированных как JSON с внутреннего сервера в моей компании. Я использую LWP для извлечения данных.
У меня есть весь скрипт, но у меня есть одна проблема.
Я пишу это на RHEL5, который использует Perl 5.8.8 с LWP 5.805. В соответствии с приведенной ниже страницей, если я хочу напрямую выводить содержание ответа на файл, я должен использовать :content_file => filename
ОДНАКО, отмечено следующее.
Обратите внимание, что это «: content_file» опция не поддерживается в старых версиях LWP, поэтому следует рассмотреть вопрос о добавлении использования LWP 5.66; чтобы проверить версию LWP, если вы считаете, что ваша программа может работать в системах с более старыми версиями .
Если вы должны быть совместимы с более старыми версиями LWP, а затем использовать этот синтаксис, который делает то же самое:
use HTTP::Request::Common; $response = $ua->request(GET($url), $filespec);
Поскольку это RHEL 5, я должен использовать старшее LWP, но я хочу сделать свой сценарий так, чтобы он использовал этот новый стиль вместо старого стиля, когда он запускается на RHEL 6 и выше, в котором используется более новая версия LWP, которая поддерживает :content_file
.
Следовательно, мне нужно знать, как определить версию модуля, и что более важно, мне нужно знать, что это самая ранняя LWP версия для поддержки :content_file
Почему вы не делаете, как предлагает комментарий, и просто используйте 'use HTTP :: Request :: Common; $ response = $ ua-> request (GET ($ url), $ filespec); '(независимо от версии)? – ikegami
Это только со старыми версиями. Я не думаю, что новые версии поддерживают это. – Speeddymon
Дальнейшее чтение комментариев указывает на то, что более новые версии AEW обратная совместимость. – Speeddymon