- ベストアンサー
for文の応用
今、S001.csvからS099.csvまでのファイルがあります。 これを下記のプログラムを書いて、新たにSA001.csvからSA099.csvまでのファイルを作りたいと考えています。 しかし、途中途中で数字が抜けているため、全てのファイルが処理できず 困っています。たとえば、S001.csvからS009.csvまでは 存在するが、S010.csvはなく、またS011.csvからは 存在するという具合です。 初歩的な質問で大変恐縮ですが、ご教示いただければ幸いです。 for ($i = 1; $i <= 99; ++$i) { $file = sprintf("S%03d.csv", $i); $newfile = sprintf("SA%03d.csv", $i); open (FILE, $file) or die; open (NEWFILE, ">$newfile") or die; while (my $line = <FILE>) { my ($aaa, $bbb, $ccc) = split(/,/, $line); print NEWFILE join(',', $aaa, $bbb), "\n"; } close(FILE); close(NEWFILE); }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
たとえば S010.csv がなかったときに SA010.csv を作らないでいいのなら #open (FILE, $file) or die; ←この行を open(FILE, $file) or next; ← こうする open (NEWFILE, ">$newfile") or die; while (my $line = <FILE>) { my ($aaa, $bbb, $ccc) = split(/,/, $line); print NEWFILE join(',', $aaa, $bbb), "\n"; } とすればいいんじゃないですかね。 警告メッセージを出すなりはしてもいいと思いますが。
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
open (FILE, $file) or die; で die してるからねぇ.
お礼
初歩的なことに気付かず、すいませんでした。 無事、自分の思い通りのことがすることができました。 警告メッセージに関するアドバイスまでいただき、 ありがとうございます。