解析perl正则表达式中的多行并提取值

kk.*_*kk. 2 regex perl multiline

我是perl的初学者.我有一个文本文件,文本类似于下面.我需要提取VALUE ="< NEEDED VALUE >".说对于SPINACH,我应该单独使用SALAD.

如何使用perl正则表达式获取值.我需要解析多行来获取它.即每个#ifonly --- #endifonly之间

$ cat check.txt

while (<$file>)
{
   if (m/#ifonly .+ SPINACH .+ VALUE=(")([\w]*)(") .+ #endifonly/g)
{
    my $chosen = $2;
   }
}
Run Code Online (Sandbox Code Playgroud)


#ifonly APPLE CARROT SPINACH
VALUE="SALAD" REQUIRED="yes" 
QW RETEWRT OIOUR
#endifonly
#ifonly APPLE MANGO ORANGE CARROT
VALUE="JUICE" REQUIRED="yes" 
as df fg
#endifonly
Run Code Online (Sandbox Code Playgroud)

Hug*_*eir 5

use strict;
use warnings;
use 5.010;

while (<DATA>) {
   my $rc = /#ifonly .+ SPINACH/ .. (my ($value) = /VALUE="([^"]*)"/);
   next unless $rc =~ /E0$/;
   say $value;
}

__DATA__
#ifonly APPLE CARROT SPINACH
VALUE="SALAD" REQUIRED="yes" 
QW RETEWRT OIOUR
#endifonly
#ifonly APPLE MANGO ORANGE CARROT
VALUE="JUICE" REQUIRED="yes" 
as df fg
#endifonly
Run Code Online (Sandbox Code Playgroud)

这使用了brian d foy 在这里描述的一个小技巧.如链接所述,它使用标量范围运算符/触发器.