While the following code works, it offends me because the regex on the line marked with #!!!!! captures only a single line
and I'd prefer to capture everything up to the next Smart Comment. Where's my "misteak?"
#!/usr/bin/perl
use Data::Dumper;
use strict;
use warnings;
use v5.10;
local $/;
my $code_s=<DATA>;
while ($code_s !~ m{\G$}cg) {
if ($code_s =~ m{\G^(\s*###+.*\n)}cgm) {
# $1 is a Smart Comment upto and including the \n
warn Data::Dumper->Dump([\$1],[qw(*1)]).' ';
# Since the \n was captured we don't need to bump pos($cod
+e_s)
#pos($code_s)++;
}
elsif ($code_s =~ m{\G((?:.*$)*)(?!\s*###+)}cgm) { #!!!!!
# $1 only captures a single line
# why not multiple lines complete with their \n?
warn Data::Dumper->Dump([\$1],[qw(*1)]).' ';
pos($code_s)++;
}
else {
my $pos=pos($code_s);
my $residue=substr($code_s,$pos);
die 'WTF:\n'.Data::Dumper->Dump([\$pos,\$residue],[qw(*pos
+ *residue)]);
};
};
exit;
__END__
no
### yes
# ### no
no
no
#### yes
yields
$1 = \'no';
at Parse.pl line 20, <DATA> chunk 1.
$1 = \' ### yes
';
at Parse.pl line 14, <DATA> chunk 1.
$1 = \' # ### no';
at Parse.pl line 20, <DATA> chunk 1.
$1 = \'no ';
at Parse.pl line 20, <DATA> chunk 1.
$1 = \'no ';
at Parse.pl line 20, <DATA> chunk 1.
$1 = \' #### yes
';
at Parse.pl line 14, <DATA> chunk 1.
Note I corrected \s###+ to \s*###+
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
Outside of code tags, you may need to use entities for some characters:
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.
|
|