Perl で CGI 自身のファイル名を取得する方法

Perl で CGI を作成する場合に、自分自身のファイル名を出力に含めたい場合があります。

固定で

$my_filename = 'blabla.cgi';

print "Content-Type: text/html\n\n";
#中略
print qq{<a href="$my_filename">再読み込み</a>};

と書いてもよいですが、以下のように書くとファイル名を変更してもコード変更が不要なので便利です。

File::Basename を使ってファイル名を取得する

use File::Basename qw(basename); # 標準モジュール
$my_filename = basename($0, '');

#以下略

File::Basename は Perl の標準モジュールです。
$0 は実行中のスクリプトファイル名(パスを含む)が格納される特殊変数です。

basename はファイルパスからファイルのベース名(※)を取得するための関数ですが、第2引数に与える拡張子として '' (空文字列)を指定すれば、ファイル名をそのまま取得できます。

※ ベース名=ファイル名のうち、拡張子を除いた部分