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