• ベストアンサー

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); }

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.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";  } とすればいいんじゃないですかね。 警告メッセージを出すなりはしてもいいと思いますが。

hunter_paul
質問者

お礼

初歩的なことに気付かず、すいませんでした。 無事、自分の思い通りのことがすることができました。 警告メッセージに関するアドバイスまでいただき、 ありがとうございます。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

open (FILE, $file) or die; で die してるからねぇ.

関連するQ&A