Use branch reset /^(?|PRIMARY_EMAIL=(.*)|ALTERNATE_EMAIL=(.*))/
^
(?|
PRIMARY_EMAIL=
br 1 ( .* ) # (1)
| ALTERNATE_EMAIL=
br 1 ( .* ) # (1)
)
Or, just this /^(?:PRIMARY_EMAIL|ALTERNATE_EMAIL)=(.*)/
^
(?: PRIMARY_EMAIL | ALTERNATE_EMAIL )
=
( .* ) # (1)
test case
while (<DATA>) {
if (/^(?:PRIMARY_EMAIL|ALTERNATE_EMAIL)=(.*)/)
{
push (@recipient, $1);
}
}
$to = join("\n", @recipient);
print "\$to = \n", $to, "\n";
__DATA__
# Email File
# List of email addresses
##############################
PRIMARY_EMAIL=abc@123.com
ALTERNATE_EMAIL=123@abc.com
#PRIMARY_EMAIL=def@456.com
#ALTERNATE_EMAIL=456@def.com
PRIMARY_EMAIL=ghi@789.com
ALTERNATE_EMAIL=789@ghi.com
Output >>
$to =
abc@123.com
123@abc.com
ghi@789.com
789@ghi.com
Here is another way
$/ = undef;
print join("\n",(<DATA> =~ /^(?:PRIMARY_EMAIL|ALTERNATE_EMAIL)=(.*)/mg));
__DATA__
# Email File
# List of email addresses
##############################
PRIMARY_EMAIL=abc@123.com
ALTERNATE_EMAIL=123@abc.com
#PRIMARY_EMAIL=def@456.com
#ALTERNATE_EMAIL=456@def.com
PRIMARY_EMAIL=ghi@789.com
ALTERNATE_EMAIL=789@ghi.com
Output >>
abc@123.com
123@abc.com
ghi@789.com
789@ghi.com