Как заставить мои скрипты Perl действовать как обычные программы в Windows?

Я хочу, чтобы мои скрипты Perl вели себя так же, как и любой другой исполняемый файл (*.файл EXE.)

  • когда я дважды щелкните на myscript.pl Я хочу, чтобы он выполнялся вместо открытия в текстовом редакторе.
  • Я хочу бежать myscript.pl вместо perl myscript.pl.
  • Я действительно хочу бежать myscript вместо myscript.pl.
  • Я хочу бежать program | myscript вместо program | perl myscript.pl.
  • Я хочу иметь возможность запускать свой скрипт с помощью перетаскивания & падение.

есть ряд изменений, которые вы должны сделать в Windows, чтобы сделать все эти штуки работают. Пользователи обычно натыкаются на вещи, которые не работа одна на время; оставляя их в замешательстве, сделали ли они ошибку, есть ошибка в Perl, в Windows есть ошибка, или поведение, которое они хотят, просто невозможно. Этот вопрос призван обеспечить единую точку отсчета для внесения все работает вперед; в идеале перед этим проблемы даже возникают.

вопросы:

3 ответов


Примечание: действия ниже требуют административных привилегий. Для шаги с использованием командной строки он должен быть запущен через " Run as администратор " в Windows Vista / Windows 7.

Associate *.PL файлы с perl

выполнить следующие команды в командной строке:

assoc .pl=PerlScript
ftype PerlScript=C:\bin\perl.exe "%1" %*

заменить C:\Perl\bin\perl.exe С путем к вашей установке Perl. Этот позволяет запускать myscript.pl вместо perl myscript.pl.

установки по умолчанию места:

  • ActivePerl выступает: C:\Perl
  • Клубничный Perl:C:\Strawberry

добавить .PL к переменной среды PATHEXT.

это заставляет Windows рассматривать *.файлы pl, которые будут исполняемыми при поиске ПУТЬ. Это позволяет запускать myscript вместо myscript.pl.

вы можете установить его для текущего сеанса cmd

set PATHEXT=%PATHEXT%;.PL

чтобы установить его постоянно (под Windows Vista или Windows 7)

setx PATHEXT %PATHEXT%;.PL

под Windows XP вы должны использовать GUI:

  1. щелкните правой кнопкой мыши значок Мой компьютер и выберите пункт Свойства.
  2. перейдите на вкладку Дополнительно.
  3. Нажмите кнопку переменные среды.
  4. выберите PATHEXT и нажмите кнопку Изменить.
  5. добавить ;.PL к текущему значению.

сделать работу перенаправления ввода/вывода

перенаправление ввода-вывода (например,program | myscript) не работает для запущенных программ через файловые ассоциации. Существует исправление реестра для устранения проблемы.

  1. Запустить Редактор Реестра.
  2. найдите и нажмите следующий раздел в реестре: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
  3. в меню Правка выберите пункт Добавить значение и добавьте следующий параметр реестра :
    • Значение Имени: InheritConsoleHandles
    • тип данных: REG_DWORD
    • основание: Decimal
    • значение : 1
  4. Закройте Редактор Реестра.

предупреждение: в принципе, это должно быть необходимо только в Windows XP. По моему опыту это также необходимо в Windows 7. В Windows 10 это активно вредно-программы выполняются, но ничего не производят на stdout/stderr. Раздел реестра должен быть установлен в 0 вместо 1.

Читайте также:

если исправление реестра не работает program | perl -S myscript.pl это менее раздражающая работа для скриптов на вашем пути.

добавить обработчик капель

добавление обработчика капель для Perl позволяет запускать скрипт Perl с помощью drag & drop; например, перетаскивание файла по значку файла в Проводнике Windows и удаление он там. Запустите следующий скрипт, чтобы добавить необходимые записи в реестр:

use Win32::TieRegistry;
$Registry->Delimiter("/");
$perlKey = $Registry-> {"HKEY_CLASSES_ROOT/Perl/"};
$perlKey-> {"shellex/"} = {
    "DropHandler/" =>  {
        "/" => "{86C86720-42A0-1069-A2E8-08002B30309D}"
}};

конвертируйте скрипты perl в пакетные файлы с помощью pl2bat как только они будут готовы к запуску пользователями.

трюк работает через perl -x переключатель, который, согласно perldoc perlrun, делает Perl поиск первой строки похожей на #!.*perl.


после выполнения инструкций в принятом ответе двойной щелчок по-прежнему приводил к .PL файлы, открывающиеся с помощью блокнота в Windows 10-даже когда perl.exe был установлен в качестве обработчика файлов по умолчанию.

после нахождения комментария Джека Ву в С использованием ActivePerl. .PL файлов больше не выполнять, но открыть в блокноте вместо я смог запустить Perl-скриптов на двойной щелчок, как например:

  • выберите и щелкните правой кнопкой мыши a .PL file
  • используйте подменю "открыть с помощью" чтобы "выбрать другое приложение"
  • выберите " Всегда использовать это приложение, чтобы открыть .PL files " (сделайте это сейчас – вы не получите шанс после того, как вы выбрали программу)
  • прокрутите до нижней части "другие параметры", чтобы найти" другие приложения", и выберите"искать другое приложение на этом ПК"
  • перейдите к C:/path/to/perl/bin/ и выберите Perl5.16.3.exe (или эквивалент, в зависимости от того, какую версию Perl вы установили: но не Perl.exe)

затем рядом появляется значок Perl .PL файлы и двойной щелчок приводит к их открытию в Perl каждый раз, когда это необходимо.