• ベストアンサー

配列の値の操作について教えてください

num.datの内容が 100 200 300 400 500 の時、以下を実行すると open(IN, "./num.dat"); @number = <IN>; close (IN); $number[0] = $number[0] - 10; open(OUT, ">./num.dat"); print OUT @number; close(OUT); 書き出されたnum.datの内容は 90200 300 400 500 のようになってしまいます。これを 90 200 300 400 500 にしたいのですがどうすればよろしいのでしょうか?くだらない質問ですが、何卒ご教授の程よろしくお願い致します。

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

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.3

読み込むデータの改行コードの扱いは、全データに対して統一しておくとバグが入り込みにくくなります。 今回のように数値計算を行うのであれば、読み込む時点で改行を取り除き、出力する際に改行を付加するべきです。 Perlはいろいろ無理を聞いてくれるので、改行が付いていようと数値計算してくれたりしますが、それに甘えていてはダメです。 変更箇所は以下の2点。 ●ファイル読み込み  @number = <IN>;    ↓  chomp(@number = <IN>); ●ファイルへの出力  print OUT @number;    ↓  print OUT "$_\n" for @number;

その他の回答 (2)

  • duckling
  • ベストアンサー率47% (88/185)
回答No.2

私も、Mizyu さんの意見に賛成です。 というか、私も同じ方法でやってますし。(笑

  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.1

無理やり改行コード入れたらダメですかね? $number[0] = ($number[0] - 10) . "\n"; とか。

関連するQ&A