スクリプトの名前はどのように取得できますか?実行中のPerlスクリプトの名前を取得する方法
たとえば、名前がXXX.pl
のPerlスクリプトがあります。このファイルには含まれています
$name = #some function that obtains the script's own name
print $name;
出力:私は、スクリプトのディレクトリを取得CWD機能にこれを例えるたい
XXX.pl
。スクリプトの名前も取得する関数が必要です。
スクリプトの名前はどのように取得できますか?実行中のPerlスクリプトの名前を取得する方法
たとえば、名前がXXX.pl
のPerlスクリプトがあります。このファイルには含まれています
$name = #some function that obtains the script's own name
print $name;
出力:私は、スクリプトのディレクトリを取得CWD機能にこれを例えるたい
XXX.pl
。スクリプトの名前も取得する関数が必要です。
実行中のプログラムの名前が$0
変数で見つけることができます。
use File::Basename;
my $name = basename($0);
PS。 getcwd()
and friendsあなたにスクリプトのディレクトリを教えてください!彼らはあなたに作業ディレクトリを与えます。スクリプトがPATHにあり、フルパスではなく名前で呼び出すだけなら、getcwd()
はあなたの言うことをしません。 dirname($0)
が必要です(住所もFile::Basename
にあります)。他の特殊変数について
print $0;
これは間違っています。 'dirname($ 0)'も相対パスを与えます。 'perl script'や'。/ script'を使ってスクリプトを実行すると、 '。'が返されます。 – felwithe
また、__FILE__
とおそらく__LINE__
について学ぶことに興味があります。これは現在の行を提供し、よく一緒に使用します。
デバッグの目的でこれを使用する場合は、「」、「Carp
」、「caller
」について学ぶこともできます。
Core Perlディストリビューションの一部であるFindBinモジュールをチェックしてください。それはあなたが探している変数をエクスポートします
EXPORTABLE VARIABLES
$Bin - path to bin directory from where script was invoked
$Script - basename of script from which Perl was invoked
$RealBin - $Bin with all links resolved
$RealScript - $Script with all links resolved
さらに詳細な答えはhttp://stackoverflow.com/a/90721/834416を参照してください。 –
実行中のプログラムはplファイルではなく、plファイルをロードして実行したバッチジョブであることがあります。あなたのファイル名があなたのパッケージ名に似ているなら、 "("。caller。 ")";最も有用です。 – HoldOffHunger