2013-10-02 71 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

相关问题