C:\Perl64\test>C:\Perl64\bin\perl test.pl $0の中身を確認:test.pl
起動したスクリプトの名前(パス)を取得する方法
スポンサーリンク
Perl で起動したスクリプトの名前を取得するには特殊変数 $0 を使用します。この $0 は起動時に指定したスクリプトで、実行中のスクリプトではありません。また起動時に相対パスで指定した場合は相対パスが、絶対パスで指定した場合は絶対パスが返されます。
$0 の中身を確認
具体的なサンプルコードと実行結果は次の通りです。
test.pl | |
1 2 3 | use strict; print '$0の中身を確認:' . $0; |
上記の 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
スポンサーリンク