久しぶりにデータ処理
コマンドラインからのファイルリスト読み込みは
@ARGV # 引数の配列 $#ARGV # 配列の個数−1 $ARGV[0] # 最初の引数 $ARGV[$#ARGV] # 最後の引数
という変数を利用すればいいはず。。。。
@FLIST = @ARGV; #コマンドラインからファイル名読み込み while($FLIST = shift @FLIST){ #端から順番に、 open(FLIST, $FLIST) or die "cannot open $FLIST: $!\n";#ファイルを読み込みように開けて #書き出しファイルの準備 $FTMP =$FLIST; $FTMP =~ s/\.dat/_/g;#拡張子を削除 # $FTMP =~ s/\.txt/_/g;#拡張子を削除 open(FOUT,">${FTMP}tab.txt") or die "cannot open output: ${FTMP}tab.txt $!\n";#書き込みファイルを作成 #以下ファイル読み込み実体 while(){ #処理の実体 } close(FLIST); }
しかし、Windowsのコマンドプロンプトで使用していると、ワイルドカード「*.dat」とかが利かない。
そこで
@FLIST = @ARGV;
の代わりに
while(<>){ chomp; push(@FLIST,$_); }
として、ファイル名リストファイルを読み込めば似たような事が可能。
ファイル名リストファイルは
$ dir > filelist.txt
などとした後、サイズや作製日、サイズなどの列を削除して、ファイル名だけにしたファイルを作成して
(例)filelist.txt
file1.dat file2.txt file3.dat file4.dat
これを利用して、
$ ./perlscript.pl filelist.txt
とすればいい。