蛙の井戸見聞記 Pretty frog in a well who knows nothing of the great web ocean!

~~ 好奇心は猫をも殺す Curiosity Kills the Cat ~~ ♪欲しいモノ・食べたいモノ・ネットで集めた情報と日々の記録の倉庫♪ Logging my life... Since 2003.12  

久しぶりにデータ処理

コマンドラインからのファイルリスト読み込みは

@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

とすればいい。