Как запускать программы с помощью Strawberry Perl?
-
21-08-2019 - |
Вопрос
Коллега пытается использовать подтверждение (программа на Perl) на своей машине под управлением Windows, он попробовал ее под Linux и решил, что определенно хочет ее использовать.Ему удалось получить Клубничный Перл установлен на его машине, но не может понять, что делать, чтобы ack запускался с ним из командной строки.Он попытался отредактировать #!линию, но я знал, что это не сработает.Я почти уверен, что Strawberry Perl находится в его PATH.
Что вам нужно сделать, чтобы запустить обычную программу Perl в вашей PATH в Windows с использованием Strawberry?
Обновлять:Я вижу в Интернете некоторую информацию о переменной PATHEXT, но ее недостаточно.
Решение
Во-первых, будьте осторожны, чтобы программа находилась в Path
, не просто perl.exe
.Двоичные файлы Perl и основные программы обычно попадают в <installdir>\bin
, но другие могут оказаться в каталоге конкретного сайта. <installdir>\site\bin
.Команда
dir C:\strawberry\ack* /s
может помочь в ваших поисках.Убедитесь, что ваш Path
отражает вашу настройку.
Есть два распространенных способа (по крайней мере, о которых я знаю) запуска программы Perl из командной строки Windows.
Первый — создать пакетную версию программы с pl2bat, который выполнит perl
с программой.Установленные программы обычно делают это автоматически, потому что MakeMaker
и Module::Build
позаботьтесь об этом.
Второе – создать .pl
ассоциация файлов.Это делается путем создания раздела реестра HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.pl\Shell\Open\Command
(или HKEY_CURRENT_USER
если это только для текущего пользователя) и установите (Default)
значение для
"C:\strawberry\perl\bin\perl.exe" "%1" %*
Таким образом, вы можете вызывать программы, просто назвав их с помощью .pl
расширение.Теперь вы можете вызвать программу с помощью program.pl
.
Возможно, вы заметили, что вызвать программу в Windows можно и без расширения.Программа ищется в Path
, но когда расширения нет, PATHEXT
используется для завершения имени.Добавить .pl
в список, и вы можете вызвать программу просто с помощью program
.Обратите внимание, что порядок в этом списке важен для поиска, так же, как и порядок в Path
имеет значение.
Установщики обычно берут на себя последние два шага, но эти знания полезны, если вы хотите добавить свой собственный или вам нужно его исправить.
Другие советы
У меня не было проблем, просто установив ack и запустив его из командной строки.
Правильно ли установлен Strawberry Perl?Можете ли вы запустить «perl» из cmd.exe?
C:\> perl -V
Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
Platform:
osname=MSWin32, osvers=5.1, archname=MSWin32-x86-multi-thread
...
App::Ack установился правильно?
C:\> cpan App::Ack
...
Installing C:\strawberry\perl\site\lib\App\Ack.pm
Installing C:\strawberry\perl\site\lib\App\Ack\Plugin.pm
Installing C:\strawberry\perl\site\lib\App\Ack\Repository.pm
Installing C:\strawberry\perl\site\lib\App\Ack\Resource.pm
Installing C:\strawberry\perl\site\lib\App\Ack\Plugin\Basic.pm
Installing C:\strawberry\perl\bin\ack
Installing C:\strawberry\perl\bin\ack.bat
Writing C:\strawberry\perl\site\lib\auto\ack\.packlist
Appending installation info to C:\strawberry\perl\lib/perllocal.pod
PETDANCE/ack-1.88.tar.gz
C:\strawberry\c\bin\dmake.EXE install UNINST=1 -- OK
Если да, то я не понимаю, почему вы не можете запустить «ack» из командной строки:
C:\> ack --version
ack 1.88
Copyright 2005-2009 Andy Lester, all rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
Если это не работает, где в этой цепочке что-то сломано?Например, если вы не можете запустить «perl» из командной строки, значит, Strawberry установился неправильно (или его нет в вашем PATH), и вам нужно это исправить.Но в противном случае ack устанавливается с оболочкой «ack.bat» по тому же пути, что и «perl», поэтому, если вы можете запустить «perl», вы сможете запустить и «ack».
Другое решение — создать ack.exe с PAR::Packer — Strawberry ему вообще не понадобится.
Если он следовал инструкциям в этот пост в блоге, с ним должно быть все в порядке.Мне уже давно не приходилось устанавливать Strawberry Perl, но IIRC, после того как я его установил, я смог использовать его так же, как если бы я был на Linux-системе.(например. perl yourscripthere.pl
)
1. Установить клубнику-perl 2.open perl Commandline 3. Команда write perl test.pl