1

Win7x64でActivePerl5.8.8ビルド822を実行しています。私たちは約60%C ++、15%perlなどのプロジェクトに取り組んでいます。Perlは、最終的なデータを作成してパックするために、断片とさまざまな小さなユーティリティアプリケーションをリンクするために頻繁に使用されます。したがって、たとえば、VS2005ソリューションにはビルド後のイベントがあり、開発ドライブのある場所にあるビルド後のperlスクリプト(PATH env varの一部)を使用してDLLへのハードリンクを作成します。

postbuild.plスクリプト呼び出しの前にインタプリタを呼び出すために明示的に「perl」を配置しないと、コマンドライン引数を受け入れないことがすぐにわかりました。cmdウィンドウに移動し、「helloworld」スタイルのperlスクリプトで同じことを行うだけで、これをさらにテストしました。「bleh.plarg1arg2」と言っても、コマンドライン引数は渡されませんでした。しかし、「perl bleh.pl arg1 arg2」と言うと、コマンドライン引数を取得します。

この失敗が発生すると、perlはゼロのコマンドライン引数を読み取り、@ ARGV変数は空またはnullになります(このクレイジーな言語が行うことは何でも)。したがって、それらは単に渡されません。

これは問題です。何千とは言わないまでも数百のperlスクリプトの呼び出しが正しく動作していないのではないかと心配しており、すべての.plスクリプトの呼び出しに明示的にperlをプレフィックスとして付ける必要があると考えるのは不合理です。バージョン管理を使用していて、これらすべてのガベージ変更をコミットしたり、自分の隠し場所で管理したりしたくありません。

PERL env varが存在し、perlバイナリが存在するフォルダを指します。また、PATHEXTには、perlスクリプト用の.PLが含まれています。同様に、私のPATHには、スクリプトとperlにアクセスするためのフォルダーエントリが含まれています。

これを理解する方法についての助けは非常にありがたいです!また、ActivePerlをインストールしたとき(これを理解しようと何度も行ってきました)。パスを変更し、Windowsのファイル拡張子を関連付けることを許可しました。これが解決策になると思います。

ありがとうございました!

4

2 に答える 2

2

あなたの関連付けは壊れています(不完全です)。まず、コンソールを開いて実行します

assoc .pl

あなたは次のようなものを得るでしょう

.pl=SOMETHING

次に、実行します

ftype SOMETHING

あなたは次のようなものを手に入れるべきです

SOMETHING="C:\SOMEWHERE\bin\perl.exe" "%1" %*

ただし、代わりに次のようなものが表示されます。

SOMETHING="C:\SOMEWHERE\bin\perl.exe" "%1"

修正するには、

ftype SOMETHING="C:\SOMEWHERE\bin\perl.exe" "%1" %*
于 2012-07-06T19:43:55.700 に答える
0

もっと検索してみてください。この質問にはあなたの答えがあります。

于 2012-07-06T19:53:14.167 に答える