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

看板Perl作者 (會走路的冰塊)時間18年前 (2007/07/03 14:36), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/5 (看更多)
※ 引述《handsomegirl (薰)》之銘言: : ※ 引述《WalkingIce (會走路的冰塊)》之銘言: : : 假設 sample 是這樣 : : 33996344 33996351 GB : : 33996352 50331647 XD : : 50331648 68257567 US : : 68257568 68257599 CA : : 或著你可以設定一個變數 $switch = 0; // 0=關閉 1=打開 : : foreach(@array) { : : $switch = 1 if (比對成功); : : print $_ if $switch; : : } : 這兩段程式我都試過了,都成功,非常感謝,之前都沒想到用switch的方式 : 不過後來想到,若是我搜尋us 我要印出US本身 跟下面的CA 前面的數字我不要 : 是要以二維陣列的方式來作嗎? : 有哪個關鍵字可以讀那個字串的陣列值? : 然後可以知道這個值從哪個檔案來嗎? 啊,問題又看不太懂了 (我的中文真是沒有我想像中好) 如果你只是要印出 US 那兩個字,直接 print 不就行了嗎? @.@ print "US" if (比對成功); 我假設「要印出US本身 跟下面的CA 前面的數字我不要」的斷句如下 「要印出US本身跟下面的CA,前面的數字我不要」 所以結果是要這樣吧 US CA 那先想想為什麼要弄個 switch? switch 打開代表接下來的東西才是我們真正關心的,所以可以這麼寫 foreach (@array) { $switch = 1 if (比對成功); if($switch) { 上上下下左右左右 AB ...; } } 只有 switch 打開後才會進到那一段 if 去,在此之前的我們都 don't care 於是問題就變成了「如何處理我們真正關心的內容」 以這個為例,那段任天堂經典秘技就可以寫成 print $1 if $_ =~ m{\d+\t\d+\t(.+)}; #數字<Tab>數字<Tab>文字 而你自己的 case 要怎麼去處理字串就自己去翻正規表示式囉 如果你真的很想知道,US 到底出現在哪幾行裏面 我不知道 foreach 有沒有一個預設變數儲存著 array index 但是我會用鄉民土砲法去把它找出來 my @index; my $count = 0; foreach (@array) { push (@index,$count) if (比對成功); $count ++; } 每跑一次 loop, $count 也會增加一次,剛好就是 array 的 index 值 接著把那幾行全部放進 @index 裏面。 值從哪個檔案來? 這個我真的完全看不懂了.....[失意體前屈] -- 我想你會衰成這樣都是我害的 ---- Tizzy Mac 緊張的麥金塔?這是誰(._.?) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.128.98.6
文章代碼(AID): #16YUvGYZ (Perl)
討論串 (同標題文章)
文章代碼(AID): #16YUvGYZ (Perl)