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

看板Perl作者 (薰)時間18年前 (2007/07/03 14:53), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串5/5 (看更多)
※ 引述《WalkingIce (會走路的冰塊)》之銘言: : ※ 引述《handsomegirl (薰)》之銘言: : : 這兩段程式我都試過了,都成功,非常感謝,之前都沒想到用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 裏面。 : 值從哪個檔案來? : 這個我真的完全看不懂了.....[失意體前屈] 呵呵 不好意思 是我表達的不好啦 因為資料是讀檔得來了,所以希望也可以print出他來源的檔案名字 大概是這樣的意思 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.65.55.161

07/04 16:53, , 1F
那可以繼續用鄉民土砲法
07/04 16:53, 1F

07/04 16:53, , 2F
比對成功以後,就把當時的檔名丟進 array 裏面囉
07/04 16:53, 2F
文章代碼(AID): #16YVA2ZV (Perl)
文章代碼(AID): #16YVA2ZV (Perl)