В жизни разработчиков программного обеспечения нам иногда приходится отклоняться от своего пути и идти по другому пути. В этом конкретном случае мне нужно было просмотреть некоторый код Perl. Я был вполне уверен, что Visual Studio Code для Perl должен быть простым делом, однако я упустил из виду тот факт, что корпоративная система, в которой я работал, имела только Perl 5.16, тогда как для расширения Visual Studio Code требовалось 5.18. К сожалению, с такой ситуацией сталкиваются многие разработчики, поскольку корпоративные системы обновляются медленнее, чем хотелось бы разработчикам.

Управление версиями Perl с помощью plenv

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

Plenv-installer отсутствует, поэтому начальная часть будет ручной. Инструкции довольно просты, поэтому просто следуйте им. Единственное изменение, которое я внес, — это перенос инициализации plenv в отдельный скрипт, чтобы я мог включить его вручную, когда мне нужно отлаживать Perl.

$ git clone https://github.com/tokuhirom/plenv.git ~/.plenv
$ echo 'export PATH="$HOME/.plenv/bin:$PATH"' >> ~/.plenv-init
$ echo 'eval "$(plenv init -)"' >> ~/.plenv-init
$ source ~/.plenv-init

После того, как это будет завершено, установите версию по вашему выбору. Для себя я установил последнюю стабильную версию на момент написания статьи 5.34.1 (нечетные второстепенные версии, такие как 5.35.11, считаются нестабильными версиями разработки).

$ git clone https://github.com/tokuhirom/Perl-Build.git ~/.plenv/plugins/perl-build/
$ plenv install 5.34.1
$ plenv rehash

Установка Perl Language Server для Visual Studio Code

Чтобы использовать отладчик Perl, нам нужно установить языковой сервер. Для Perl в Perl::LanguageServer реализован полнофункциональный языковой сервер. Сначала нам нужно переключиться на установленную версию Perl, а затем установить языковой сервер.

$ plenv global 5.34.1
$ perl -v
This is perl 5, version 34, subversion 1 (v5.34.1) built for x86_64-linux
$ cpan Perl::LanguageServer

После завершения установки мы можем проверить, был ли модуль успешно собран и установлен.

$ plenv list-modules
...
Perl::LanguageServer
...

Установка кода Visual Studio для расширения Perl

Расширение кода VS, используемое сообществом, — Perl. Найдите perl в расширениях и установите расширение, опубликованное Джиральдом Рихтером. После его установки нам нужно будет добавить путь к языковому серверу и вспомогательным модулям в @INC. Это делается путем изменения файла VS Code settings.json и добавления следующего фрагмента JSON.

"perl.perlInc": [
    "/home/chinghwa/.plenv/versions/5.34.1/lib/perl5/site_perl/5.34.1/",
    "/home/chinghwa/.plenv/versions/5.34.1/lib/perl5/site_perl/5.34.1/x86_64-linux/",
],

После этого VS Code сможет найти языковой сервер, но продолжит использовать системный perl. Нам нужно указать VS Code использовать версию perl, установленную через plenv, добавив следующий фрагмент JSON в settings.json.

"perl.perlCmd": "/home/chinghwa/.plenv/versions/5.34.1/bin/perl",

Вы захотите проверить свой launch.json, чтобы убедиться, что конфигурация отладки Perl была создана.

{
    "type": "perl",
    "request": "launch"
    "name": "Perl-Debug",
    "program": "${workspaceFolder}/${relativeFile}",
    "stopOnEntry": true,
    "reloadModules": true,
}

При необходимости добавьте дополнительные конфигурации. Например, если вы передаете аргументы, добавьте другую конфигурацию с помощью ключа «args».

Как только это будет завершено, откройте файл Perl и начните отладку!

Первоначально опубликовано на https://chinghwayu.com 27 апреля 2022 г.