My solution with the while loop works with many emails
on the same line. In fact doing so we consider the text
as a whole totally ignoring newlines.
The idea of /g flag within a while is each match will
start where the previous one has stopped and the loop
stops when there is no more successful match.
The special variable @- is an array with
the match start and end positions respectivly as
$-[0] and $-[1] it might
help to see what the loop does,
while ($txt =~ /constant=(\w+@\w+\.\w+)/g) {
print "==> match starts at $-[0]!!!\n";
print "$1\n";
}