Как мне запускать программы с Strawberry Perl?

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

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

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


person skiphoppy    schedule 20.03.2009    source источник
comment
Отказ от ответа, поскольку он избыточен и основан на неправильном понимании вашего вопроса.   -  person Frakkle    schedule 20.03.2009
comment
Я бы хотел, чтобы ты оставил это, Фраккл. В нем была для меня полезная информация, но я не могу вспомнить, что это было!   -  person skiphoppy    schedule 21.03.2009


Ответы (4)


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

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

person Ronald Blaschke    schedule 21.03.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».

person xdg    schedule 20.03.2009
comment
Мы не устанавливали App :: Ack ... мы установили автономный скрипт подтверждения. Я попробую установить App :: Ack через CPAN, и это, вероятно, сработает в этом случае, но я все же хочу знать в более общем плане, как сделать это, изменив PATHEXT. :) - person skiphoppy; 20.03.2009
comment
Да, установите App :: Ack, а затем скопируйте ack.bat из perl \ site \ bin в perl \ bin (по крайней мере, это то, что я должен был сделать). Нет реальной необходимости изменять PATHEXT. - person Frakkle; 20.03.2009
comment
Спасибо, xdg. Это заставило нас работать. - person skiphoppy; 20.03.2009

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

person Alexandr Ciornii    schedule 08.05.2009

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

Шаги

person sushma_chorghade    schedule 17.05.2019