- ベストアンサー
配列の値の操作について教えてください
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 にしたいのですがどうすればよろしいのでしょうか?くだらない質問ですが、何卒ご教授の程よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
読み込むデータの改行コードの扱いは、全データに対して統一しておくとバグが入り込みにくくなります。 今回のように数値計算を行うのであれば、読み込む時点で改行を取り除き、出力する際に改行を付加するべきです。 Perlはいろいろ無理を聞いてくれるので、改行が付いていようと数値計算してくれたりしますが、それに甘えていてはダメです。 変更箇所は以下の2点。 ●ファイル読み込み @number = <IN>; ↓ chomp(@number = <IN>); ●ファイルへの出力 print OUT @number; ↓ print OUT "$_\n" for @number;