多くの値のセットで構成されるファイルがあります。REGEX が見つかったら、ファイル内で一致する必要な行を抽出しようとしています。ファイル.txt
......
......
TRIP (
?name "model"
?prompt "Model name"
?defamount "USD100"
?type "adventure"
?display "no"
?photos "800"
)
TRIP (
?name "macro"
?prompt "macro model name"
?defamount "USD500"
?type "adventure"
?display "no"
?photos "1200"
)
TRIP(
?name "description"
?prompt "description"
?defamount "USD400"
?type "historical"
?display "yes"
?photos "900"
)
.......
........
.....
.......
......
「名前とモデル」、「名前と説明」の行を抽出したいこれらの行とともに、「名前とモデル」、「名前と説明」の行が一致したら、最初の「デファマウント」を抽出したい。ループで試しましたが、成功しませんでした
use strict;
open FILE, "<File.txt";
open FILE2, ">>data1.l";
while (my $string = <FILE>) {
if ($string =~ m/^ CELL/ig) {
print FILE2 $string;
}
elsif ($string =~ m/"model"/i) {
print FILE2 $string;
}
elsif ($string =~ m/defamount/o) {
print FILE2 $string;
}
elsif($string =~ m/"description"/i) {
print FILE2 $string;
}
elsif($string =~ m/defamount/o) {
print FILE2 $string;
}
}
close FILE;
close FILE2;
これにより、ファイルからすべての「defamount」行が得られますが、上記の正規表現に一致した後の最初のdefamountだけが必要です