この前
pythonで一時ファイル、一時ディレクトリ(tempfile)
を書いたのでPerl版のも書いてみる
何はなくともmanページ
perldoc.jpのドキュメントなら日本語なので安心。
File::Temp - テンポラリファイルの名前とハンドルを安全に返す - perldoc.jp
使い方
ポイントは2つ。
-
use File::Temp
の後に続けてqw/ tempfile /
を書くこと - tempfileの引数に
( UNLINK => 1 )
を指定すること
※UNLINK => 1
を指定しないと/tmpにファイルが残ったままになるので忘れないように。
main.pl
# !/usr/bin/perl
use v5.10; # say関数を使えるようにする
use warnings;
use File::Temp qw/ tempfile /;
my ($fh, $filename) = tempfile( UNLINK => 1 );
print $fh "Created by File::Temp\n";
close $fh; # 閉じておいた方がよかった気がする※要出典
say "filename=$filename";
system("cat $filename"); # この時点では存在する。プロセス終了時に削除される。
実行結果
$ perl main.pl
filename=/tmp/MfjliwahDk
Created by File::Temp
$ ls /tmp/MfjliwahDk
ls: cannot access /tmp/MfjliwahDk: No such file or directory
同じくtempdir
- tempdirの引数に( CLEANUP => 1 )を指定すること
main.pl
# !/usr/bin/perl
use v5.10;
use warnings;
use File::Temp qw/ tempfile tempdir /;
my ($tmpdir) = tempdir(CLEANUP => 1);
if(-d $tmpdir) {
say "tmpdir=$tmpdir"; # この時点では存在する。プロセス終了時に削除される。
}
実行結果
$ perl main.pl
tmpdir=/tmp/9iHtvMPpvq
$ ls /tmp/9iHtvMPpvq
ls: cannot access /tmp/9iHtvMPpvq: No such file or directory