Re: [MacPerl-AnyPerl] recursive regex

[email protected] (John Delacour) Thu, 28 Aug 2003 10:03:26 +0100
Newsgroups perl.macperl.anyperl
Message-ID <p06001f02bb7372f730e1@[10.0.0.11]>
Can't you just use s///ge ?


#!/usr/bin/perl
@lines = split $/, <<EOL;
beginend
begin1+0end
begin1+1endbegin'   $ENV{HOME}'end
begin1+2end
begin1+3end
begin sprintf q~%.05\d~, 5endbegin sprintf q~%.05\d~, 6end
EOL
for (@lines) {
	s~begin(.*?)end~eval $1~ge ;
	print "$_$/" ;
}


At 1:20 am -0700 28/8/03, Nicholas Thornton wrote:
>I have a regex I'm performing on a file that takes a
>given string, manipulates it, and replaces the string
>with the new string. I want this do be done
>recursively on each line in case there are multiple
>sections that need to be dealt with. I'm currently
>using something like:
>
>while(<$file>){
>	WHILE:while() {
>		if ($string =~ /begin(.*?)end/) {
>			my $perl = $1;
>			my $eval = eval $perl;
>			$string =~s/begin.*?end/$eval/;
>		} else {last WHILE}
>	}
>}
>
>It looks sort of clunky to me, and I don't trust the
>subsitution even if it does work, but I can't seem to
>get it to work using $perl or $1 in place of the
>/.*?/. I was wondering if anyone had any suggestions
>for making it nicer, shorter, or cleaner?