And since I'm getting excited about Perl6 pattern matching and want the practice, let's do this with a Perl6 rule, line for line with the above Perl5 regex.
# <Perl6>
/^^ \h* $$ # Match a line that only contains horizontal whitespace,
+ if anything (blank line).
( # Capture to $1.
[ # Group, but don't capture.
^^ \# # Comment delimiter at the start of a line.
.* $$ # Everything until the end of the line, includes the new
+line.
]+ # One or more comment lines in a row.
) # End $1 capture.
$id # The key we're looking for. This matches as a literal s
+tring, not a pattern.
/
# </Perl6>
And here's the short version:
m/^^ \h* $$ $ret:=([^^ \# .* $$]+) $id/;
You can see I added a small bit ('$ret:=') just before the capture. This binds the value of the capture, $1 in this case, to $ret if the pattern matches, but not if it fails. Just what we want.
kelan
Yak it up with Fullscreen ChatBox |