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]