2013-10-02 121 views
1

我對Perl相當陌生。我正在嘗試逐行讀取文件,在每行中搜索特定的模式。如果找到了模式,那麼我需要將同一行的不同部分存儲在不同的變量中。例如,說這些是文件中的行 -搜索子字符串並在Perl中存儲字符串的另一部分

01 Started Job 1 Calculation 
02 Started Job 2 Publish 
03 Completed Job 1 Calculation 
04 Started Job 3 Upload 
05 Completed Job 2 Publish 

我正在每行中搜索單詞「Started Job」。如果找到了,我需要存儲以字符串開頭的作業號和作業名稱,並將記錄ID(行中的第一個單詞)存儲到另一個字符串中。到目前爲止,這是我有的代碼 -

while (<READLOG>) 
    { 
     if (/Started Job/) 
     { 
       my @words = split(" ",$_); 
       my $recordID = $words[0]; 
       my $Job = $words[3] . " " . $words[4]; 
     } 
    } 

這適用於現在,但我想知道是否有更好的方式做到這一點?喜歡存儲「開始工作」後面的所有單詞嗎?

任何幫助,非常感謝。謝謝 !

回答

3

你應該多看看正則表達式。在「開始工作」之後存儲單詞可以通過使用匹配組來完成,即/Started Job(.*)$/。您將在$1中找到該行的其餘部分。

+0

這很簡單!非常感謝:) – Amritha

+1

是的,Perl非常簡單。只要保持乾淨,否則,你最終將無法閱讀你兩個月前寫的內容;) –

+0

或者'/ Started Job/p',其餘的行在'$ {^ POSTMATCH}'中。 – Kenosis

相關問題