3

の使用に関する同様の質問

#! /usr/bin/perl

回答済みです。しかし、私は少し異なる質問があると思いますが、一般的な計算についての私の理解の欠如を考えると、おそらくまだ知っている人々に似ています。

私はWindowsにUNIXを持っていないので、以下を直接テストできませんでしたが、WindowsでPerlを実行するためにシバン行は実際には必要ありませんが、hello.plにシバン行がありますが、それでも実行できませんでしたから移動した場合のファイル

c:\Users\XYZ\Desktop\BegPerl

c:\Users\XYZ\Desktop

私のスクリプトは

c:\Users\XYZ\Desktop\BegPerl

私のperlフォルダは下に保存されています

c:\Strawberry\perl\bin\perl.exe

だから私の質問は:

  1. Windowsはどのようにして「perl.exe」を見つけますか?
  2. perl hello.plシバンラインが含まれていても、下に入力しc:\Users\XYZ\Desktop\BegPerlた場合にのみWindowsがhello.plを検出できるのはなぜc:\Users\XYZ\Desktopですか?

シバンラインの「目的」について私が得た答えは

UNIXライクなシステムの場合、スクリプトの実行可能ファイルを検索します

したがって、私の2つの質問に対する答えは、UNIXライクなシステムとWindowsの違いに関係しているのではないかと思います。

4

2 に答える 2

6

OSレジストリでplファイル拡張子をに関連付ける。perl.exeであるディレクトリperl.exeは、システム内にある必要がありますPATH

perlをインストールすると両方が発生するはずですが、そうでない場合は、それを実行する必要があります。

于 2013-02-12T18:36:50.203 に答える
1
  1. dir/perl script.plまた/dir/perl script.pl

    • perlUnix:OSは指定されたパスで検索します。シバンラインは使用されません。*
    • perlWin:OSは指定されたパスで検索します。シバンラインは使用されません。*

  2. perl script.pl

    • Unix:OSはperlPATHenvvarのパスを検索します。シバンラインは使用されません。*
    • perlWin:OSは、現在のディレクトリを基準にして、PATH環境変数のパスを検索します。シバンラインは使用されません。*

  3. script.pl

    • Unix:OSはシバン行を探し、指定されたプログラムと引数に続いてスクリプト名とコマンドライン引数を実行します。
    • Win:OSは、その拡張子のファイルのファイルの関連付けを探し、指定されたプログラムと引数を実行します。%1ファイルの名前に置き換えられます。%*コマンドライン引数に置き換えられます。

* —シバンラインはシステムによって使用されません。Perlは、使用されなかった場合に備えて、実際にはシバンラインの独自の解釈を行います。これにより-w、シバンラインを使用しなかった場合でも、そこを有効にすることができます。

于 2013-02-12T20:16:20.447 に答える