File::Tempが便利
File::Tempが便利
一時ファイルを作る場合、IO::Fileのnew_tmpfileではファイル名が取得できないが、File::Tempではファイル名を取得することができる。
作ったファイルは特に宣言をしない限り、プログラム終了とともに削除される。
use File::Temp (); $fh = File::Temp->new; $fname = $fh->filename;
こんな感じ。
Image::Magickと組み合わせて使うと、
$dataには画像データが入っているとして、
my $fh = File::Temp->new or die "一時ファイルがつくれませんでした。"; $fh->print($data); $fh->flush; my $image = Image::Magick->new; $x = $image->Read($fh->filename); my $tn = File::Temp->new(SUFFIX=>".jpg") or die "一時ファイルがつくれませんでした。"; $x = $image->Write(filename=>$tn->filename); die "画像の一時保存ができませんでした" if "$x"; my $new_data = join("",$tn->getlines);
と、「SUFFIX=>".jpg"」とすることで拡張子を決め打ちでき、Image::Magickから目的とするフォーマットで出力も安定してできる。