分かりやすく、使いやすく。

起動したスクリプトの名前(パス)を取得する方法

スポンサーリンク

Perl で起動したスクリプトの名前を取得するには特殊変数 $0 を使用します。この $0 は起動時に指定したスクリプトで、実行中のスクリプトではありません。また起動時に相対パスで指定した場合は相対パスが、絶対パスで指定した場合は絶対パスが返されます。

  1. $0 の中身を確認
  2. 外部ファイルやモジュールで $0 を参照した場合


$0 の中身を確認

具体的なサンプルコードと実行結果は次の通りです。

test.pl
1
2
3
use strict;
 
print '$0の中身を確認:' . $0; 
C:\Perl64\test>C:\Perl64\bin\perl test.pl
$0の中身を確認:test.pl 

上記の test.pl を起動する際に絶対パスで指定すると次のようになります。

C:\Perl64\test>C:\Perl64\bin\perl C:\Perl64\test\test.pl
$0の中身を確認:C:\Perl64\test\test.pl 

外部ファイルやモジュールで $0 を参照した場合

外部ファイルやモジュールで $0 を参照した場合も、起動時に指定したスクリプト名が返されます。サンプルコードは次の通りです。

test2.pl
1
2
3
4
5
use strict;
 
use MyModule;
 
require 'outer_file.pl'; 
MyModule.pm
1
2
3
4
5
package MyModule;
 
print 'MyModuleの中で$0を呼び出し:' . $0 . "\n";
 
1; 
outer_file.pl
1
2
3
use strict;
 
print 'outer_file.pl の中で$0を呼び出し:' . $0 . "\n"; 

上記の test2.pl を実行した結果は次の通りです。

C:\Perl64\test>C:\Perl64\bin\perl test2.pl
MyModuleの中で$0を呼び出し:test2.pl
outer_file.pl の中で$0を呼び出し:test2.pl 

起動する際に絶対パスで指定すると次のようになります。

C:\Perl64\test>C:\Perl64\bin\perl C:\Perl64\test\test2.pl
MyModuleの中で$0を呼び出し:C:\Perl64\test\test2.pl
outer_file.pl の中で$0を呼び出し:C:\Perl64\test\test2.pl 
スポンサーリンク