perl中同時讀取兩個檔案並進行對應計算

2021-06-04 08:17:11 字數 1772 閱讀 7178

用控制代碼讀取大檔案進陣列是很佔記憶體的事,所以,一邊讀資料,一邊處理資料,處理完之後就直接輸出到檔案,這是個很靠譜的想法,尤其是處理特大資料的時候,這個想法尤其珍貴。下面是具體例子:

輸入檔案1:

31      0

32 0

33 0

34 0

35 0

36 0

37 0

38 0

39 0

40 0

41 0

42 0.95

43 0

44 0

輸入檔案2:

92      0

93 0

94 0

95 0

96 0

97 0

98 0

99 0

100 0

101 0

102 0

103 0

104 0

105 0

106 0

107 0

108 0

109 0

110 0.138888888888889

111 0

112 0

113 0

114 0

115 0

116 0

117 0

118 0

處理**:

#!/usr/bin/perl

use strict;

use warnings;

my $pb_file = shift; #read file of polar bear

my $bb_file = shift; #read file of blown bear

my $n1 = 18;

my $n2 = 10;

open (aa, "$pb_file") or die "$!";

open (bb, "$bb_file") or die "$!";

open (cc, ">a_ab.txt") or die "$!";

my $aa;

my $bb = ;

while( $aa = )else

}my $p12_2 = ($pb[1] - $bb[1])*($pb[1] - $bb[1]);

my $alpha1 = 2 * $pb[1] * (1 - $pb[1]);

my $alpha2 = 2 * $bb[1] * (1 - $bb[1]);

my $a = $p12_2 - ($n1+$n2)*($n1*$alpha1 + $n2*$alpha2) / 4*$n1*$n2*($n1+$n2-1);

my $b = $p12_2 + (4*$n1*$n2-$n1-$n2)*($n1*$alpha1 + $n2*$alpha2) / 4*$n1*$n2*($n1+$n2-1);

my $fst;

if ($a == 0)else

print cc "$bb[0]\t$a\t$b\t$fst\t\n";

}

求出資料之後可以作圖...........待續

shell指令碼不使用exec,同時讀取兩個檔案

還是需要用到檔案重定向 翻譯成白話就是告訴機器使用哪個檔案進行輸入輸出 網上大多讀取兩個檔案的操作是使用exec實現檔案重定向,但是這樣exec後,檔案重定向操作會永久生效 但是一般只希望在當前命令中有效,之後就沒用了。比如 意思是從 3 號 fd file descriptor,檔案描述符 中讀一...

如何同時管理兩個專案?

最近比較忙。產品的乙個版本a正在測試部門進行功能 效能的驗證測試,另乙個版本b正在處於需求分析階段。因工作安排關係,我作為版本a專案組c和版本b專案組d的專案經理,需要負責版本a的問題定位 小特性開發的的組織工作,需要負責版本b的專案計畫 開發組織工作。多項工作進行,面臨多個領導的壓力,確實是很有挑...

如何同時返回兩個值

關鍵字就是被c語言本身占用的那些字串,比如 int,typedef。我們在定義變數或函式的名字時時要避開它們。標誌符就是我們定義的變數和函式的名字。提出乙個問題 寫乙個函式,計算兩個數相除,要求同時返回商和餘數,怎麼寫?我們知道函式的返回值只能有乙個,同時返回兩個數這跟本不可能。但用結構就變為可能了...