出力用にファイルを開くだけで、ファイルが作成されます。
ファイル名のリストがどこから来たのかはわかりませんが、以下のプログラムではそれをハードコーディングしています。
$fh
ファイル ハンドルは、ループの各サイクルの終わりに変数がスコープ外になると Perl によって自動的に閉じられるため、閉じる必要がないことに注意してください。
-e
オペレータは、ファイルが存在するかどうかを確認します。-f
または、ノードが存在し、ディレクトリではない場合に trueを使用することもできます。同じ名前のディレクトリが既に存在する場合、open
失敗します。
use strict;
use warnings;
my @files = qw/
UEDP01_20120821.csv
UEDP02_20120821.csv
UEDP03_20120821.csv
UEDP04_20120821.csv
UEDP05_20120821.csv
/;
for my $file (@files) {
open my $fh, '>', $file or die $! unless -e $file;
}
アップデート
Bill Ruppert が提案したように、ファイルが存在するかどうかに関係なく、追加のためにファイルを開くことを好むかもしれません。これにより、必要に応じてファイルが作成されますが、既に存在する場合はそのまま残ります
use strict;
use warnings;
my @files = qw/
UEDP01_20120821.csv
UEDP02_20120821.csv
UEDP03_20120821.csv
UEDP04_20120821.csv
UEDP05_20120821.csv
/;
open my $fh, '>>', $_ or die $! for @files;