標準モジュールを使おう(1)File::Temp

なんとなく続編物にしてみた

File::Temp
5.006001
一時ファイルとか一時ディレクトリを用意してくれるモジュール。
ファイルに書き込みが完了してからコピーしたりとか
tarアーカイブを展開する一時的なディレクトリとして
使ったりとか夢がひろがりんぐ?
とにかくファイル操作があるなら、use strict,use warningsと一緒にどうぞ。
 
勝手に消しておいてくれるオプションがあるので推奨しておく。
 
a.pl

#!/usr/bin/perl
use strict;
use warnings;
use File::Temp qw/ tempfile tempdir /;
$\="\n";# print の後に改行を入れてくれる特殊変数

# このプロセスが終わったら消す
my ($fh, $filename) = tempfile( UNLINK => 1 );
print "\$filename=$filename";

# tmpファイルに書き込み
print $fh "ひたぎさんとあららぎさん";
close $fh;

# tmpファイル読み込み
open my $fh2, "< $filename" or die "error $!";
while(my $line = <$fh2>) {
  chomp $line;
  print $line;
}
close $fh2;

# ディレクトリは CLEANUP を指定する
my $tmpdir = tempdir( CLEANUP => 1 );
print "tmpdir=$tmpdir";
if (-d $tmpdir) {
  print "dir exist!";
}
$ perl a.pl
filename=/tmp/Fxx9SiiI6W
ひたぎさんとあららぎさん
tmpdir=/tmp/AUkHdsofEf
dir exist!
$ ll /tmp/Fxx9SiiI6W
ls: /tmp/Fxx9SiiI6Wにアクセスできません: No such file or directory
$ ll /tmp/AUkHdsofEf
ls: /tmp/AUkHdsofEfにアクセスできません: No such file or directory

perldoc File::Temp でもいいし、日本語訳なら以下
 
File::Temp - テンポラリファイルの名前とハンドルを安全に返す
http://perldoc.jp/docs/modules/File-Temp-0.12/Temp.pod
 
Perlの標準モジュール確認君
http://demo.lonio.us/pl_mod/