Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

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

s/\Q$value\E/$replace/i;

instead.

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.


Comment on Re: Regex is not working
Select or Download Code
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?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1056720]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (4)
As of 2014-09-15 03:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite cookbook is:










    Results (145 votes), past polls