2016-08-31 46 views
-5

我對編程非常新穎。我需要在perl中逐行讀取一個文件。該文本文件有兩列和100,000行都有數字。我需要對每個數字應用此公式(/ 16)* 100,並且結果應該是一個單獨的文件,並且包含2列和100000行。一個算術計算每個數字在一個txt文件中由perl

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; 

最後我們要打印我們的結果。這很簡單:

print "@new_numbers\n"; 
相關問題