同僚が ack (Perlプログラム)を自分のWindowsマシンで使用しようとしています。Linuxで試してみて、間違いなく使用したいと決心しました。彼はなんとか Strawberry Perl を自分のマシンにインストールしましたが、コマンドプロンプトからackを実行するために何をすべきかを理解できていないようです。 #を編集してみました。行、しかし私はそれがうまくいかないことを知っていました。 Strawberry PerlがPATHに含まれていると確信しています。
Strawberryを使用してWindowsのPATHで一般的なPerlプログラムを実行するには、何をする必要がありますか?
更新:PATHEXT変数に関する情報がオンラインで表示されていますが、十分ではありません。
まず、プログラムがPerl.exe
ではなくPath
にあることに注意してください。 Perlバイナリとコアプログラムは通常<installdir>\bin
で終了しますが、その他はサイト固有のディレクトリ<installdir>\site\bin
で終了する可能性があります。コマンド
dir C:\strawberry\ack* /s
検索に役立つ場合があります。 Path
が設定を反映していることを確認してください。
WindowsコマンドプロンプトからPerlプログラムを実行するには、少なくとも2つの一般的な方法があります。
1つ目は、プログラムのPerl
を実行する pl2bat を使用して、プログラムのバッチバージョンを作成することです。 MakeMaker
とModule::Build
がこれを処理するため、インストールされているプログラムは通常、これを自動的に行います。
2つ目は、.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
の順序が重要であるのと同様に、このリストの順序は検索にとって重要であることに注意してください。
通常、インストーラは最後の2つのステップを処理しますが、この知識は、独自のステップを追加したい場合、または修正する必要がある場合に役立ちます。
Ackをインストールしてコマンドラインから実行するだけで問題は発生していません。
Strawberry Perlは正しくインストールされていますか? cmd.exeから「Perl」を実行できますか?
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」を実行できるはずです。
別の解決策は、PAR :: Packerでack.exeを作成することです。彼はStrawberryをまったく必要としません。
このブログ投稿 の指示に従っている場合、彼は大丈夫です。今のところStrawberry Perlをインストールする必要はありませんでしたが、IIRCをインストールすると、Linuxボックスを使用している場合と同じように使用できました。 (例:Perl yourscripthere.pl
)
1. strawberry-Perlをインストールします2. Perlコマンドラインを開きます3.コマンドPerl test.plを書き込みます