2016-08-31 10 views
-5

プログラミングにはとても新しいです。私はperlで行単位でファイルを読む必要があります。テキストファイルには、2つの列と、すべてが数字を持つ100,000行があります。私はこの数式(/ 16)* 100を各数値に適用する必要があり、結果は2列と100000行で別のファイルにする必要があります。perlでtxtファイルの各数値の算術計算

use strict; 
use warnings; 

my $filename = 'results_AH.txt'; 
open(my $fh, '<:encoding(UTF-8)', $filename) 
    or die "Could not open file '$filename' $!"; 

while (my $row = <$fh>) { 
    chomp $row; 
    print "$row\n"; 
} 
print "done\n"; 

これは私が持っているものです。ファイルは(ちょうど一部)のように見えます。計算は、列と各数値の両方で行われます。助けてください:)

AH LHH 
5 0 
4 0 
3 0 
5 0 
5 0 
4 0 
3 0 
4 0 
4 0 
4 0 
5 0 
5 0 
3 0 
4 0 
+4

あなたはどこにいますか? – Jens

答えて

6

ファイル名をハードコードすることは、ほとんどの場合、悪い考えです。 <>から読み込んだ場合、コマンドラインで任意のファイル名を渡すことができます。また、より多くのデータを$_に読み込むことができます。

while (<>) { 
    # do stuff with $_ 
} 

私たちは何をしたいですか?最初に、データを個々の列に分割して配列に格納しましょう。

my @numbers = split; 

ていることに注意してください、デフォルトでは空白にsplit()$_の作品と分割。

ここで計算を行う必要があります。 map()を使用して、@numbersのすべての要素でそれを実行できます。

my @new_numbers = map { $_ * 100/16 } @numbers; 

最後に、結果を印刷します。それは次のような単純なものです: