寫perl遇到的問題

歡迎提問 debian desktop 相關問題,何謂 desktop ? 舉凡您日常生活會用到的部份,如上網 ( www 、 bbs ..) 、程式設計、繪圖...等等。 通常以 X Window 環境底下問題為主。

寫perl遇到的問題

文章littlefat » 週三 5月 18, 2005 8:47 pm

小弟的程式有各問題,請會的大大幫我看一下

那一開使將檔案讀入
我的檔案裡面有例如:$tmp = 1 , 2 , 3 ,4,四種
混合有1千多萬個

然後我的程式一開始讀入後
將$tmp裡面都塞到一個@a裡面去(有計算個數)
再來將$tmp裡面的 reverse 在存到@b去

可是就發生了有讀到@a裡面
可是沒有辦法再往下跑了,就出現:Out of Memory

這樣該怎麼改寫呢?是不是$tmp不能塞太多?
謝謝
littlefat
可愛的小學生
可愛的小學生
 
文章: 3
註冊時間: 週三 5月 18, 2005 8:46 pm

文章willie0220 off-line » 週三 5月 18, 2005 10:00 pm

你是用for/foreach迴圈去寫的嘛?
試試看用while迴圈改寫....應該可以避免掉out of memory的問題...
willie0220 off-line
 

文章littlefat » 週三 5月 18, 2005 10:12 pm

小弟是已經用while寫了
可是最後只產生了前半部的count
再來讀,就出現了Out of memory了
麻煩各位幫我看一下

open(FILE,"<$filename") or die "$!";
open(RS,">$output");

while (defined($line = <FILE>))
{
if($line !~ /^>/)
{
$line =~ s/ //g;
$line =~ s/$\\n//ig;
$tmp .= $line;
}
}

@D = $tmp;
$D = join('', @D);
$all = 0;
$all = length($D);
print RS "count = $all\n";

@ReD = split("",$tmp);
@ReD = reverse(@ReD);
$ReD = join("",@ReD);
$Reall = 0;
$Reall = length($ReDNA);
print RS "Recount = $Reall\n";
littlefat
可愛的小學生
可愛的小學生
 
文章: 3
註冊時間: 週三 5月 18, 2005 8:46 pm

文章訪客 » 週四 5月 19, 2005 1:10 am

將檔案資料分段處理.
(弄個計數器測一下最大可處理筆數)
訪客
 

文章littlefat » 週四 5月 19, 2005 10:14 am

Anonymous 寫:將檔案資料分段處理.
(弄個計數器測一下最大可處理筆數)


之前有分段過了,但是最後計算出來的結果會有問題
跟用整段計算出來不同

計數器該怎麼寫....
littlefat
可愛的小學生
可愛的小學生
 
文章: 3
註冊時間: 週三 5月 18, 2005 8:46 pm


回到 debian desktop

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客