my @array_1 = ("\$Id_run_query=1", "\$name_run_query=xyz", "db_query_run_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";