
あるディレクトリ内の全てのファイル名を取得し、
全てのファイルを開いてカンマ、ダブルクォーテーション付加の処理をし、
別ファイルへと出力する。と言ったものを以下のように作ったのですが、
入れ子のforeach{}内へ入って行きません、
foreachの入れ子は出来ないのでしょうか?
それともプログラムが間違っているのでしょうか?
どなたかご教授お願いいたします。
require "./jcode.pl"; # jcode.plの呼び出し
#ディレクトリ表示
opendir(DIR01,"./TestData") || die "can not open dir";
@FileName = readdir(DIR01);
closedir(DIR01) || die "can not close dir";
foreach $file (@FileName) {
if ($file eq '.') {next;}# '.'の時ループを抜ける
if ($file eq '..') {next;}# '..'の時ループを抜ける
$FName = "./TestData/$file";
# ファイルのオープン
open ( FILEHANDLE , "$FName") || die "ファイルを開けません :$!\n";
@line = <FILEIN>;
close (FILEIN);
foreach $line (@line){
#########################
print "TEST-->$line\n";
#########################
$line =~ s/ⅰ|ⅱ|ⅲ|ⅳ|ⅴ|ⅵ|ⅶ|ⅷ|ⅸ|ⅹ//g;
$line =~ s/\"/\"\"/g;
$line =~ s/\,\"\?/\"\,\"/g;
$line =~ s/\"\,\?/\"\,\"/g;
$line =~ s/\ |\ /\"\,\"/g;
&jcode::sjis2euc(\$line,"z"); # sjis --> euc コードへ変換
if (length $line != 1){
chop($line);
$cd_22 = chr(0x0022);
$line = "$cd_22$line$cd_22";
$line =~ s/([^\LF])$/$1\n/;
}
}
open (FILEOUT, ">./log/TEST.txt") or die; #上書き時
print FILEOUT @line;
close (FILEOUT);
}
}
exit;
No.2ベストアンサー
- 回答日時:
ファイルのopenで指定しているファイルハンドル名と、以降のファイルハンドル名が違っていますが、これが問題ではないでしょうか?
No.1のalicia-yさんへの補足になりますが、foreach で指定した変数は各要素へのエイリアスになるので、変更は配列にも反映されますよ。
回答どうもありがとうございました。
確かに言われてみれば単純なミスでしたが、言われてみて気が付きました。
どうもありがとうございました。
No.1
- 回答日時:
$line の内容を変更しても @line の内容が変更されないので
処理されていない様に見えるのでしょう。
foreach を for($i = 0;$i <= $#line; $i++){
に変更して $line を $line[$i] に修正すれば
動くと思いますが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
相手側の携帯が電源切れてる時...
-
1コールだけ鳴るけど切れる電話...
-
風俗に行ったとして、そこで嬢...
-
face book で女性の方からline ...
-
いきなりラインのトークに「新...
-
ある男子から、ライン追加され...
-
よく05(04)lineって見かけるん...
-
Please tell me to some ramen ...
-
2000年生まれなのですが 00line...
-
遠くにいる友達とLINE交換する...
-
ラインナップとラインアップは...
-
毎月記念日をlineで祝うのって...
-
Windowsのバッチファイルで正規...
-
LaTeXでÅ
-
生産ラインの品質を表す直行率...
-
「courtesy of the artist」の...
-
lineのワン切り、なぜ?
-
3ヶ月前に別れた彼とはカカオト...
-
phpとpostgreの接続にエラー解...
-
電話番号と違う人がLINEのアカ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
1コールだけ鳴るけど切れる電話...
-
相手側の携帯が電源切れてる時...
-
face book で女性の方からline ...
-
風俗に行ったとして、そこで嬢...
-
よく05(04)lineって見かけるん...
-
生産ラインの品質を表す直行率...
-
ラインナップとラインアップは...
-
Windowsのバッチファイルで正規...
-
毎月記念日をlineで祝うのって...
-
いきなりラインのトークに「新...
-
「一番上、真ん中、下」を示す英語
-
遠くにいる友達とLINE交換する...
-
法線(normal line)はなぜそう...
-
ある男子から、ライン追加され...
-
line でおはようございます、の...
-
python flask から fastapiへの...
-
まだそんなに親しくない相手と...
-
LINEで好きな人が「笑」を全然つ...
-
歯科衛生士の方へ、連絡先を渡...
-
2000年生まれなのですが 00line...
おすすめ情報