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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to