Re: [問題] 讀檔案到陣列
※ 引述《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
討論串 (同標題文章)
Perl 近期熱門文章
PTT數位生活區 即時熱門文章