Как мне запускать программы с Strawberry Perl? - PullRequest
27 голосов
/ 20 марта 2009

Сотрудник пытается использовать ack (программу Perl) на своей машине с Windows, попробовав ее под Linux и решив, что он определенно хочет ее использовать. Ему удалось установить на своем компьютере Strawberry Perl , но он не может понять, что нужно сделать, чтобы запустить его с помощью командной строки. Он пытался редактировать #! линия, но я знал, что это не сработает. Я почти уверен, что клубничный Perl находится в его PATH.

Что нужно сделать, чтобы запустить обычную Perl-программу в PATH в Windows с помощью Strawberry?

Обновление: я вижу в сети некоторую информацию о переменной PATHEXT, но ее недостаточно.

Ответы [ 5 ]

21 голосов
/ 21 марта 2009

Во-первых, будьте осторожны, чтобы программа находилась в 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 имеет значение.

Инсталляторы обычно заботятся о последних двух шагах, но эти знания полезны, если вы хотите добавить свой собственный или хотите исправить это.

17 голосов
/ 20 марта 2009

У меня не было проблем, просто установив 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».

3 голосов
/ 08 мая 2009

Другое решение - создать ack.exe с помощью PAR :: Packer - ему совершенно не понадобится Strawberry.

1 голос
/ 20 марта 2009

Если он следовал инструкциям в этом сообщении в блоге , он должен быть в порядке. У меня уже давно не было необходимости устанавливать Strawberry Perl, но IIRC, после того, как я установил его, смог использовать его так же, как если бы я был на Linux-коробке. (например, perl yourscripthere.pl)

0 голосов
/ 17 мая 2019

1.Установите клубнику-перл 2. Откройте Perl командной строки 3. Запишите команду perl test.pl

Steps

...