perl-embperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gerald Richter - ECOS GmbH" <rich...@ecos.de>
Subject RE: About the regular expression problem
Date Fri, 04 May 2007 11:14:13 GMT
HI,

> I have a problem when I use regular expression.
> The sample code:
> [- $_ = "One Two Three" -]
> [$ if(/(\S+) (\S+) (\S+)/) $]
> The words are: [+$1+], [+$2+], [+$3+]
> [$ endif $]
> 
> The result should be "The words are: One, Two, Three," But I 
> got the result "The words are: One, Two,."
> After trying, I found that I could just get the match 
> variables $1 and $2, and the match veriables $3, $4 etc, 
> could not be used in embperl.
> 
> There is no problem about this in pure perl code such as $_ = 
> "One Two Three";
> if(/(\S+) (\S+) (\S+)/) {
>     printf "The words are: $1, $2, $3";
> }
> 


Embperl does not do anything with $3, $4 etc. I guess this is a scoping 
problem. I would write


 [$ if(($a, $b, $c) = (/(\S+) (\S+) (\S+)/)) $]
 The words are: [+$a+], [+$b+], [+$c+]
 [$ endif $]

That makes sure $1, $2 etc. does not go out of scope

Gerald


** Virus checked by BB-5000 Mailfilter **

---------------------------------------------------------------------
To unsubscribe, e-mail: embperl-unsubscribe@perl.apache.org
For additional commands, e-mail: embperl-help@perl.apache.org


Mime
View raw message