On Sun, May 4, 2008 at 1:19 AM, <[EMAIL PROTECTED]> wrote: > Hi, > How do I simplify the regex below so that it matches only the number 1, > henceforth it should return false if I match $string with $match. > > use strict; > use warnings; > > my $string = "10 11 12 13 40"; > my $match = 1; > > if ($string =~/^$match | $match | $match$/g){ > print "match"; > }else{ > print "unmatch"; > }; >
I may be missing something, but I believe you will get the same results with just if ($string =~ /$match/) { print "match\n"; } else { print "no match\n"; } However, if you are going to include a string in a regex you should probably use the \Q and \E modifiers* to prevent any metacharacters (., *, ?, etc.) in the string from being interpreted by the regex (unless, of course, that is what you want): if ($string =~ /\Q$match\E/) { print "match\n"; } else { print "no match\n"; } If you are going to use the same string in a regex multiple times you are better off compiling it as a regex with the qr// operator** first: my $match = qr/1/; * http://perldoc.perl.org/perlre.html#Regular-Expressions ** http://perldoc.perl.org/perlop.html#qr%2fSTRING%2fmsixpo -- 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/