in reply to Parsing with regular expressions

Not sure it will always work the way you want but you could try to use (?{CODE}) in your regex.
$_ = "glad guy sad gal\n" ; while( / (?{print "$`\n"}) (\b.a.\b|..l) (?{print "\nmatch: $&\n\n"}) /gx ){}; __END__ g gl gla glad glad glad g glad gu glad guy glad guy match: sad glad guy sad glad guy sad match: gal