On Thu, Mar 20, 2008 at 9:01 AM, Ram Prasad <[EMAIL PROTECTED]> wrote: > I have a somewhat strange requirement > I want to find if a regex matched what exactly matched > > to reproduce this > > ------------------ > my @x; > $x[0] = 'chi+ld*'; > $x[1] = '\sjoke'; > > $_=getinput(); # for test assume $_="This is a joke"; > > if(/($x[0]|$x[1])/){ > print "Matched '$1' \n"; > } > ----------------- > > > I want to know if $x[0] matched or $x[1] matched > What is the most efficient way of doing this ? snip
Don't use an alternation: if (/($x[0])/) { #first one matched } elsif (/($x[1])/) { #second one matched } else { #neither matched } Also, you should use the qr// operator* instead of quotes when storing a regex in a variable: my @x = ( qr/chi+ld*/, qr/\sjoke/ ); * http://perldoc.perl.org/perlop.html#Regexp-Quote-Like-Operators -- Chas. Owens wonkden.net The most important skill a programmer can have is the ability to read. -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/