私はフリップフロップを使って過去に異なるSTART & ENDのテキストを抽出することができました。 今度は、フリップフロップのSTART & ENDが同じであるため、ソースファイルに異なるデリミタがないため、テキストを抽出するのに苦労しています。 yyyy年のラインの存在が&のときに、$_
を別の行がyyyyを開始するまで配列にプッシュし続けると、フリップフロップが真に始まります。 フリップフロップの問題は、次のSTARTでfalseになることです。perlフリップフロップを使用してSAMEデリミタ間のテキストを抽出
while (<SOURCEFILE>) {
print if (/^2017/ ... /^2017/)
}
上記のソースデータを使用すると、ファイルの2番目の複数行部分が見つからなくなるため、一致する必要があります。多線ファイルを解析する最良の方法だと思ったフリップフロップは、この場合にはうまくいかないでしょうか?私がしたいのは、日付が&で始まる最初の行とのマッチングを開始し、日付で始まる次の行の前の行までマッチングを続けます。
2017 message 1
Text
Text
Text
2017 message 2
more text
more text
more text
2017 message 3
yet more text
yet more text
yet more text
しかし、私は取得しています::
サンプルデータがある
2017 message 1
Text
Text
Text
2017 message 2
2017 message 3
yet more text
yet more text
yet more text
...行方不明のメッセージ2つの内容..私はスペースまたは異なるENDの区切り文字に依存することはできません
私のソースデータで。 私は、各メッセージを印刷する(実際にはpush @myarray, $_
&)と試しましたが、フリップフロップがfalseに設定されているため、メッセージ2の下に行がありません。フリップフロップでこれを処理する方法は何ですか?または何か他のものを使用する必要がありますか? 事前に助けて助言できる人に感謝します。
@simbabque友だちに感謝します。投稿が編集されました。 – mkHun
もう1つ...それは動作しますが、あなたは決して '$ f'をリセットしません。何故なの? 2つ目の 'if'ブロックにリセットと' redo'を入れて、それぞれのペアを実際にペアにすることができますが、それを行う際に利点はありません。 – simbabque