csvファイルを統合する
あるディレクトリにtest1.txtとtest2.txtというカンマ区切り(拡張子はcsvではないですけど)があったとして、それらのファイルを1行ずつ読み込み、それを追加書き出しで1つのファイルに収めていこうとしています。
そこで以下のようなコードを書いてみたのですが、どうやらtest1.txtしか読み込んで書き出せていないようなのです。その原因が分からずに困っています。
$dir = 'C:/Perl/workdir'; # 対象ディレクトリ名
open MYHANDLE, ">>out.txt"; # 追加書き出しモードでファイルハンドルをオープン
opendir DH, $dir or die "$dir:$!"; # ディレクトリを開く
while ($file = readdir DH) { # ディレクトリにあるファイル名を取得し、$fileに格納
next if $file =~ /^\.{1,2}$/; # '.'や'..'も取れるので、スキップする
open MYFILE, "$file"; # 取得したファイルを開く
while (<MYFILE>) {
chomp;
@dat = split /,/; # 読み込むファイルは「カンマ区切り」としてレコードを読み込む。
$n = @dat;
for($i=0; $i<$n; $i++){
print MYHANDLE $dat[$i]; # ファイルに追加書き出し(ファイルがなければ新規作成される)
print MYHANDLE ","; # カンマ区切りで書き出していく
}
print MYHANDLE "\n"; # 1行読み終えるごとに改行
}
close MYFILE; # i番目のファイルを読み終えたら閉じる
print $file, "\n"; # 読み込み・書き出しをしたファイル名を表示する
}
closedir DH;
close MYHANDLE;
補足
いえ、セキュリティの問題でです。 自分のサイト内ではパーミッションは755にして呼び出し・実行・書き込みはしてあります。 単純に、自分のサイトのhtmlやcgiからは呼び出せるが、他のサイトから呼び出せなくする方法はないかなと思いまして。 よろしくお願いします。