28

ある同僚が自分の Windows マシンでack (Perl プログラム) を使おうとしていて、Linux で試してみて、絶対に使いたいと決めました。彼は自分のマシンにStrawberry Perlをインストールすることに成功しましたが、コマンド プロンプトから ack を実行するにはどうすればよいかわかりません。彼は #! を編集してみました。行、しかし私はそれがうまくいかないことを知っていました. Strawberry perl が彼の PATH にあると確信しています。

Strawberry を使用して、Windows 上の PATH で一般的な Perl プログラムを実行するには、何をする必要がありますか?

更新: PATHEXT 変数に関する情報をオンラインでいくつか見ていますが、十分ではありません。

4

4 に答える 4

21

まず、プログラムがPathだけでなくにあることに注意してperl.exeください。通常、Perl バイナリとコア プログラムは最終<installdir>\bin的に<installdir>\site\bin. コマンド

dir C:\strawberry\ack* /s

あなたの検索に役立つかもしれません。Path設定が反映されて いることを確認してください。

Windows コマンド プロンプトから Perl プログラムを実行するには、少なくとも私が知っている 2 つの一般的な方法があります。

1 つ目は、プログラムと共に実行されるpl2batを使用してプログラムのバッチ バージョンを作成することperlです。インストールされたプログラムは通常、これを自動的にMakeMaker行いModule::Buildます。

.pl2 つ目は、ファイルの関連付けを作成することです。これを行うには、レジストリ キーを作成し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 つの手順はインストーラーが処理しますが、この知識は、独自の手順を追加したい場合や修正する必要がある場合に役立ちます。

于 2009-03-21T16:25:46.557 に答える
17

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」を実行できるはずです。

于 2009-03-20T20:03:14.750 に答える
3

別の解決策は、PAR::Packer を使用して ack.exe を作成することです。Strawberry はまったく必要ありません。

于 2009-05-08T10:32:42.483 に答える