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/


Reply via email to