2016-05-20 3 views
2

私はPerlにはかなり新しく、構造化されたテキストファイルを正常に解析するPerlスクリプトを書くのは非常に困難です。perlで不規則なコマンドの出力を解析する

基本的にファイルには、これらのようなテキストが含まれています

//test/some_text/value1 
... #001 some non important text 
... #023 some non important text 
//test/some_text/value2 
... #1123 some non important text 
//test/some_text/value3 
... #001 some non important text 
... #023 some non important text 
... #022 some non important text 
... #566 some non important text 
//test/some_text/value4 
... #42 some non important text 

残念ながら、私はラインのそれぞれは//で開始し、私のような出力を取得したいと思い怒鳴る必要がありますどのように多くの行ドットで予測することはできませんこれは:

//test/some_text/value1 - 001 
//test/some_text/value1 - 023 
//test/some_text/value2 - 1123 
//test/some_text/value3 - 001 
//test/some_text/value3 - 023 
//test/some_text/value3 - 022 
//test/some_text/value3 - 566 
//test/some_text/value4 - 42 

私はそれが最良の解決策ではないと感じています。私は本当にあなたのヒントを感謝し、問題を解決するのに役立ちます。

+1

こんにちは。あなたは明確な入力と出力で問題の概要を説明してくれました。ありがとうございました。しかし、私たちはあなたのコードを書くのが好きではありません。あなたはこれまでのことを教えてください。 – Schwern

答えて

3

行単位でOKです。接頭辞の行を格納するだけです。

use warnings; 
use strict; 

my $prefix; 
while (<DATA>) { 
    if (m{^//}) { 
     chomp; 
     $prefix = $_; 
    } 
    else { 
     my ($num) = /#(\d+)/; 
     print "$prefix - $num\n"; 
    } 

} 

__DATA__ 
//test/some_text/value1 
... #001 some non important text 
... #023 some non important text 
//test/some_text/value2 
... #1123 some non important text 
//test/some_text/value3 
... #001 some non important text 
... #023 some non important text 
... #022 some non important text 
... #566 some non important text 
//test/some_text/value4 
... #42 some non important text 
関連する問題