Как уже отмечали другие, perl blah.pl asdf
работает, а blah.pl asdf
не работает.Это происходит потому, что когда вы запускаете скрипт perl напрямую, Windows понимает, что он должен вызвать perl, и использует правило perl "%1"
, которое передает только имя скрипта в perl, а не какой-либо из параметров.
Чтобы исправить это , вы должны указать Windows использовать правило perl "%1" %*
Как это сделать может быть немного утомительно:
Опция 1
Согласно perlmonks , вы должны иметь возможность использовать assoc
и ftype
в командной строке.Фактически, если вы наберете help ftype
, он скажет вам, как настроить perl:
assoc .pl=PerlScript
ftype PerlScript=perl.exe %1 %*
Для запуска assoc
требуется команда cmd от имени administrator в Windows 7.
Однако это не сработало для меня.Windows проигнорировала ассоциацию.Я должен был изменить реестр.Это может быть связано с неправильным советом по запуску утилиты Default Programs
в Win 7, которая позволяет вам указать программу, которая будет использоваться для заданных расширений файлов. В отличие от XP , это не позволит вам указать несколько командных опций (для использования в контекстном меню) - только позволит вамукажите программу, которая используется при двойном щелчке файла (или при запуске foo.pl из командной строки).
Параметр 2
Изменение реестра: HKEY_CLASSES_ROOT
Если вы использовали команды assoc / ftype, у вас могут быть записи для perl
или PerlScript
.Как я уже говорил ранее, они будут игнорироваться.Найдите pl_auto_file
и просмотрите до command
:
HKCR\pl_auto_file\shell\open\command
Здесь (Default)
должно быть установлено примерно так: "C:\Perl\bin\perl.exe" "%1"
Добавьте отсутствующее %*
в конце этого, и вы должны быть готовы пойти: "C:\Perl\bin\perl.exe" "%1" %*
перезагрузка не требуется.
Вариант 3
Если вы 'ленивый и доверчивый, вы можете попробовать использовать это как reg-файл и импортировать его в свой реестр:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\pl_auto_file\shell\open\command]
@="\"C:\\Perl\\bin\\perl.exe\" \"%1\" %*"
Этого должно быть достаточно, чтобы blah.pl asdf
заработало.