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/