Re: [問題] 讀檔案到陣列

看板Perl作者 (會走路的冰塊)時間18年前 (2007/07/02 16:51), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/5 (看更多)
※ 引述《handsomegirl (薰)》之銘言: : 1.想請問一下,當我把檔案都讀到陣列裡去後 : 有什麼辦法可以搜尋我指定的字串 : 然後可以得到此字串在第幾行, : 包括這行,開始往下print? 假設 sample 是這樣 33996344 33996351 GB 33996352 50331647 XD 50331648 68257567 US 68257568 68257599 CA 全部讀進陣列後,對每一行做比對 在比對成功之前的每一行都丟進另一個 array 裏面 #! /usr/bin/perl open FILE,"sample"; @a1 = <FILE>; my @a2; # 以 US 來比對 push (@a2,shift @a1) while (@a1[0] !~m{.+US} && @a1); print @a2; print "=====\n"; print @a1; 結果如下 33996344 33996351 GB 33996352 50331647 XD ===== 50331648 68257567 US 68257568 68257599 CA 或著你可以設定一個變數 $switch = 0; // 0=關閉 1=打開 foreach(@array) { $switch = 1 if (比對成功); print $_ if $switch; } : 2.假設我把這個檔案分成幾段去讀取 : 怎麼樣可以把第二段接在第一段後面呢? : 例如: : p1 p2 p3... 我想把第二段接在這裡,不是接在下面 : 1 v1 v2... : 2 v3 v4... : 這個有辦法嗎?翻了很多書想了幾天還是沒想到方法,請大家幫幫忙, : 謝謝,我一直都在這個版受益良多 不太懂問題的意思 如果延伸上面的程式繼續這樣寫 while (@a1 || @a2) { chomp @a2[0]; print "@a2[0] --- @a1[0]"; shift @a1; shift @a2; } 結果就會如下,不知道是不是你要的 33996344 33996351 GB --- 50331648 68257567 US 33996352 50331647 XD --- 68257568 68257599 CA -- 我想你會衰成這樣都是我害的 ---- Tizzy Mac 緊張的麥金塔?這是誰(._.?) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.128.98.6
文章代碼(AID): #16YBnq7S (Perl)
文章代碼(AID): #16YBnq7S (Perl)