誰かがファイルの関連付けを介してperlスクリプトを呼び出すことと、同じスクリプトを明示的に呼び出すことの違いを説明できますかperl.exe
?
スクリプトがファイルの関連付けを介して呼び出された場合、I / Oリダイレクトはうまく機能しないようです。その理由を、本当に知りたいと思います。
たとえば、Windows上のPerlのActivestateFAQを見てください。cat file
スクリプトがリダイレクトを介して入力を受け取らない限り、この例は完全に機能します。それで
cat file.txt
期待どおりに動作しますが
whoami | cat.pl
ではない。.pl
拡張機能が必要なだけでなく、の出力がwhoami
スクリプトにパイプされていないようです。スクリプトは実行されますが(サンプルcat.pl
スクリプトを変更することで確認できます)、何らかの理由で、の出力をwhoami
入力として受け取りません。
ただし、次のようにスクリプトを呼び出すと、次のようになります。
whoami | perl cat.pl
すべてが期待どおりに機能します。
したがって、ファイルの関連付けを介してスクリプトを実行することと、スクリプトを明示的に呼び出すことには、明らかに重要な違いがありperl.exe
ます。
pl2bat
FAQには問題が記載されており、スクリプトのbatファイルカバーを生成するために使用すると問題が解決することが指摘されていますが、なぜこれが必要なのかわかりません。
教えてください。