Как заставить мои скрипты Perl действовать как обычные программы в Windows?
Я хочу, чтобы мои скрипты Perl вели себя так же, как и любой другой исполняемый файл (*.файл EXE.)
- когда я дважды щелкните на
myscript.pl
Я хочу, чтобы он выполнялся вместо открытия в текстовом редакторе. - Я хочу бежать
myscript.pl
вместоperl myscript.pl
. - Я действительно хочу бежать
myscript
вместоmyscript.pl
. - Я хочу бежать
program | myscript
вместоprogram | perl myscript.pl
. - Я хочу иметь возможность запускать свой скрипт с помощью перетаскивания & падение.
есть ряд изменений, которые вы должны сделать в Windows, чтобы сделать все эти штуки работают. Пользователи обычно натыкаются на вещи, которые не работа одна на время; оставляя их в замешательстве, сделали ли они ошибку, есть ошибка в Perl, в Windows есть ошибка, или поведение, которое они хотят, просто невозможно. Этот вопрос призван обеспечить единую точку отсчета для внесения все работает вперед; в идеале перед этим проблемы даже возникают.
вопросы:
- как заставить скрипты Perl распознавать параметры в консоли Win32 cmd?
- запуск скрипта perl в windows без расширения
- Perl выполнение из командной строки вопрос
- как я могу прочитать конвейерный ввод в Perl на Windows?
- Perl для Windows, ассоциаций файлов и ввода-вывода перенаправление
- как создать программы перетаскивания Strawberry Perl?
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:
- щелкните правой кнопкой мыши значок Мой компьютер и выберите пункт Свойства.
- перейдите на вкладку Дополнительно.
- Нажмите кнопку переменные среды.
- выберите PATHEXT и нажмите кнопку Изменить.
- добавить
;.PL
к текущему значению.
сделать работу перенаправления ввода/вывода
перенаправление ввода-вывода (например,program | myscript
) не работает для запущенных программ
через файловые ассоциации. Существует исправление реестра для устранения проблемы.
- Запустить Редактор Реестра.
- найдите и нажмите следующий раздел в реестре:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
- в меню Правка выберите пункт Добавить значение и добавьте следующий параметр реестра :
- Значение Имени:
InheritConsoleHandles
- тип данных:
REG_DWORD
- основание:
Decimal
- значение :
1
- Значение Имени:
- Закройте Редактор Реестра.
предупреждение: в принципе, это должно быть необходимо только в Windows XP. По моему опыту это также необходимо в Windows 7. В Windows 10 это активно вредно-программы выполняются, но ничего не производят на stdout/stderr. Раздел реестра должен быть установлен в 0 вместо 1.
Читайте также:
- перенаправление STDIN/STDOUT может не работать при запуске из ассоциации файлов
- Perl скрипты на Windows 10 запускаются из проводника, но не из командной строки
если исправление реестра не работает 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 каждый раз, когда это необходимо.