Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Re: Regex is not working

by moritz (Cardinal)
on Oct 03, 2013 at 05:21 UTC ( #1056720=note: print w/replies, xml ) Need Help??

in reply to Regex is not working

$query =~ s/$value/$replace/i;

The problem is that $value contains something like $Id, and the $ when interpreted as a regex means "match the end of the string", not "match a dollar sign". You can fix that by writing



Fwiw this is how I'd solve the same task:

my @array_1 = ("\$Id_run_query=1", "\$name_run_query=xyz", "db_query_r +un_query=select * from meter where metetid=\$Id and metername=\$name" +); my $query; my %replace; foreach(@array_1){ if (m/^db_query_run_query=(.*)/i){ $query = $1 } elsif (/(\$\S+)_run_query=(.*)/) { $replace{$1} = $2; } } my $replace_re = join '|', map quotemeta, keys %replace; $query =~ s/($replace_re)/$replace{$1}/ig; print "===>$query\n";

The call to quotemeta does the same as \Q...\E in the regex.

Replies are listed 'Best First'.
Re^2: Regex is not working
by Rahul Gupta (Sexton) on Oct 03, 2013 at 05:28 UTC

    Thanks it worked for me:-)

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1056720]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (6)
As of 2017-06-29 07:45 GMT
Find Nodes?
    Voting Booth?
    How many monitors do you use while coding?

    Results (655 votes). Check out past polls.