最近使ったモジュール

ジョーシキなのかもだけど、メモ的にエントリーしてみるテストです。

FindBin

メールが送られたときにキックされるスクリプトなんかを動かすときには、実行時のカレントディレクトリが望ましくない場所になっていることがほとんどです。
これだと同じ配下の lib/ とかに使うモジュールがあるとか、相対パスでファイルをいじるなどのときに困ったことになります。
それをこのモジュールを使って、

use FindBin;
#...
chdir $FindBin::Bin;

として カレントディレクトリに移動することで解決したり、

use FindBin;
use lib "$FindBin::Bin/lib"

のようにしてカレントディレクトリ直下の lib/ ディレクトリを use lib させたりできます。

File::Temp

ファイルを一時的に作って、プロセス終了時には消してほしい場合にはこれを使うと楽です。
ファイル名の排他制御的なこともやってくれるので、多い日も安心(?)。

標準入力を一時ファイルに保存する例:

use File::Temp;
my $fh = File::Temp->new(
    TEMPLATE => 'eml_XXXXX',
    DIR => '/tmp',
    #UNLINK => 0,
);
while (<STDIN>) {
    $fh->print($_);
}
$fh->flush();
close $fh;

#ファイル名
print $fh->filename;