XML または任意のテキスト形式にすることができます。Perlでテキストブロックをgrepする一般的な方法は?
<track type="ws">
<range>
<rangeStart>0</rangeStart>
<rangeEnd>146.912</rangeEnd>
<locationIndex>0</locationIndex>
<propertyIndex>0</propertyIndex>
</range>
</track>
<track type="ps" id="1">
<range>
<rangeStart>0</rangeStart>
<rangeEnd>146.912</rangeEnd>
<locationIndex>1</locationIndex>
<propertyIndex>1</propertyIndex>
</range>
</track>
type="ps"
grep して、 までのすべてを取得したい</range>
。
1 つの解決策は、ファイルを開き、1 行ずつ読み取ってから、ブロックを一致させることです。
open(FH, "file.txt");
foreach $line (<FH>) {
if ($line =~ m/type="cc"(.*?)<\/range>/) {
print $1;
}
}
しかし、ファイルを1行ずつ読み取らずに、より最適な解決策はありますか?