Re: [問題] 一次讀兩個檔以上

看板Perl作者 (下一個未來)時間11年前 (2014/04/18 13:40), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串2/2 (看更多)
簡單的作法 把你一行移動一下 讀檔指標歸零就好 ※ 引述《yalent ( 心只有妳 )》之銘言: : 小弟又有個問題想請教各位朋友 : A檔案內容是 : 10013240 臺灣省屏東縣滿州鄉 : 10013280 臺灣省屏東縣瑪家鄉 : 10014070 臺灣省臺東縣東河鄉 : 10014140 臺灣省臺東縣金峰鄉 : 10015060 臺灣省花蓮縣壽豐鄉 : .. : B檔案內容是 : 10014070 : 10015060 : 10015060 : 10013240 : ... : 我想一次讀兩個檔,當B的內容比對到與A前面的數字相同時, : 將B檔案的內容取代成A檔案後面的字串 : 所以B檔案會變成如下 : 臺灣省臺東縣東河鄉 : 臺灣省花蓮縣壽豐鄉 : 臺灣省花蓮縣壽豐鄉 : 臺灣省屏東縣滿州鄉 : .... : 我的寫法如下: : --- : my $ina = "A.txt"; : my $inb = "B.txt"; : #open (FILEa , "<". $ina); #^^^^^^^^^^^^^^^^^^^^^^^^^移動這一行 : open (FILEb , "<". $inb); : while(<FILEb>){ : if ($_ =~ /(\d+)/){ : $n1=$1; open (FILEa , "<". $ina); # 到這邊來 : while(<FILEa>){ : chomp; : if ($_ =~ /(\d+)\s+(\S+)/){ : $m1=$1; : $m2=$2; : if ($n1 == $m1){ : print "$m2\n"; : } : } : } : } : } : --- : 不過看起來有問題,幾乎都沒有比對到, : 請問我的寫法哪裡有問題嗎? : 感謝大家~ 當然有比較正統的寫法 但我想這樣寫應該也可以跑 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.44.131 ※ 文章網址: http://www.ptt.cc/bbs/Perl/M.1397799637.A.C51.html

04/18 14:31, , 1F
也可不移動,在 while(<FILEa>) 上面加: seek FILEa,0,0;
04/18 14:31, 1F

04/18 15:20, , 2F
太感謝了,謝謝兩位~
04/18 15:20, 2F
文章代碼(AID): #1JKBhLnH (Perl)
文章代碼(AID): #1JKBhLnH (Perl)