On Mar 20, 6:01 am, [EMAIL PROTECTED] (Ram Prasad) 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 ?
>
Your question is similar to the one posted here:
http://perldoc.perl.org/perlfaq6.html#How-do-I-efficiently-match-many-regular-expressions-at-once%3f
and thus similarly answered:
my @strings = ('chi+ld*', '\sjoke');
$_ = 'This is a joke';
for my $s (@strings)
{
my $pat = qr/($s)/;
print "Matched '$1' in '$_' (with pattern string '$s')\n" if (/
($pat)/);
}
--
Hope this helps,
Steven
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/