Re: [問題] 資料長度

看板Perl作者 (薰)時間17年前 (2008/01/21 14:59), 編輯推噓2(204)
留言6則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《handsomegirl (薰)》之銘言: : 目前遇到的問題,拿兩個檔案比對,第一欄位相同的話 : 就把第二個檔案的內容接在第一個檔案後面,但不包含比對的欄位 : ex: : 1.txt----- e890a A.00 23 35 : 2.txt----- e890a 345 123 : print f $line." ".$array[1]." ".$array[2],"\n"; : (這是簡略的寫法~但是我的array事實上有30多個@@) : 然後寫進新檔案 : 3.txt----- e890a A.00 23 35 345 123 : 把資料寫進新檔案的時候 : 由於資料量太長 : 導致他不理會我的跳行符號"\n" : 所有的資料都連在一起 : 但是資料也不能拆成兩段去寫入 : 因為之後要再放到excel去畫圖 : 請教各位高手有什麼解決的方法嗎? : 謝謝指教 放上程式片段 open(file1,"<1.txt"); while($line1=<file1>){ chomp $line1; @array=split/\s+/,$line1; open(file2,"<2.txt"); while($line2=<file2>){ @array2=split/\s+/,$line2; if ($array[0]=~/$array2[0]/){ open f,">>3.txt"; print f $line1." ".$array2[1]." ".$array2[2]." ".$array2[3]." ".$array2[4]." ". $array2[5]." ".$array2[6]." ".$array2[7]." ".$array2[8]." ".$array2[9]." ". $array[10]." ".$array2[11]." ".$array2[12]." ".$array2[13]." ".$array2[14]." ". $array2[25]." ".$array2[26]." ".$array2[27]." ".$array2[28]." ".$array2[29]." ". $array2[30]." ".$array2[31]." ".$array2[32],"\n"; 上面黃色部份是一行~為了閱讀方便我拆開來,陣列的1-32元素 } } close file2 ; } close file1; close ff; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.65.55.161

01/21 15:49, , 1F
你的 file2 開檔後沒有後 chomp
01/21 15:49, 1F

01/21 15:51, , 2F
另外妳的程式有一個效率的問題,妳有兩層的while
01/21 15:51, 2F

01/21 15:52, , 3F
第二層裡面妳是用開檔的方式使用file2,如果你的file1有
01/21 15:52, 3F

01/21 15:53, , 4F
10000行,那你的file2就必須開檔10000次..這樣效率會很差
01/21 15:53, 4F

01/21 15:53, , 5F
如果要使用這樣雙層的方式,至少在迴圈之前把檔案都寫入陣列
01/21 15:53, 5F

01/21 15:56, , 6F
第一行推文有錯字... 是開檔後沒有做 chomp
01/21 15:56, 6F
文章代碼(AID): #17b4BNGY (Perl)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #17b4BNGY (Perl)