重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

perl やり始めたばかりです。宜しくお願いします。

入力ファイル data.txt があるとします。 data.txt は、

123 456
789 333
555 777

以上のようなテキストファイルといたします。このファイルを
以下の様に100分の1にして出力したい。

1.23 4.56
7.89 3.33
5.55 7.77

と言うことで、この場で教えていただきました。それが、以下です。

#!/usr/bin/perl

open(IN, "data.txt") or die ;
@x = <IN>;
close (IN);

foreach $line (@x){
chomp($line);
@elms = split(' ',$line);
foreach $data (@elms){
print $data/100," ";
}
print "\n";
}

おかげ様でこれはこれで上手く動きました。そこで、出力値をファイルに
書き込みたいのです。 もちろん、以下の様な方法でファイルに
書き込めるのは判っております。

計算プログラム.pl > outfile.txt

しかし、上のプログラムをベースにファイルに書き込めないかと色々と
試してはみましたが、どうも上手く行きません。
どなたか教えて頂けないでしょうか?
宜しくお願い申し上げます。

A 回答 (3件)

>もちろん、以下の様な方法でファイルに書き込めるのは判っております。


 いや、全く分かってないから、書き出せないのですね。
#!/usr/bin/perl
open(IN, "data.txt") or die ;
open(OUT,">output.txt") or die;
foreach (<IN>){
my $line="";
my (@data,@out)= ();
chomp;
@data = split(' ',$_);
foreach(@data){
push(@out,$_/100);
}
$line = join (" ",@out);
print OUT "$line\n";
}
close (IN);
close (OUT);
__END__
    • good
    • 0
この回答へのお礼

誠にありがとうございます。
上手くいきました。

お礼日時:2013/12/09 16:15

単に output 用にファイルハンドルを用意するだけで、


OK です。

http://pastebin.com/3UJDsKf8
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2013/12/09 16:16

個人的には入出力のファイル名をプログラムやスクリプトの中に埋め込むのは嫌いなんだが, さておき「どうも上手く行きません」とは具体的に何をどうやってどう「うまくいかない」のですか?



ファイルのオープンやオープンしたファイルへの書き込みは, 当然ですができますよね?
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2013/12/09 16:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!