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
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|