Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Regex assistance, please.

by clueless newbie (Friar)
on Oct 21, 2012 at 17:42 UTC ( #1000227=perlquestion: print w/ replies, xml ) Need Help??
clueless newbie has asked for the wisdom of the Perl Monks concerning the following question:

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*###+

Comment on Regex assistance, please.
Select or Download Code
Re: Regex assistance, please.
by moritz (Cardinal) on Oct 21, 2012 at 17:49 UTC

      Thank you, moritz. But changing the cgm to cgms causes $1 on the marked line to capture everything including the "Smart Comments"

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1000227]
Approved by moritz
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (16)
As of 2014-07-22 19:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (126 votes), past polls