How can I add a variable to a regexp? (Perl) -


so here's sample

while (<fh>) {    $line = $_;   chomp($line);    $marksearchpat= "href=\"\@x\@embeddedfile\.requesturlstub\@x\@bbcswebdav\/xid";         $markreplacepat= "href=\"http:\/\/www\.facepalm\.org\/bbcswebdav\/xid";       ## (mark)  duplicate input file lines "altered" file, making substitutions necessary.   $linenumber++;         print "line $linenumber has been read\n";   $line2=$_;       $line2=~s/$marksearchpat/$markreplacepat/eig;     print whout $line2;        print whlog 'at '.localtime().', replaced '. $marksearchpat .' '. $markreplacepat .' @ line '.$linenumber.' of file '.$file."\n";  

how add regex variable (a regex match variable)to $marksearchpat , $markreplacepat

you can't with

s/$search_pat/$replace/ 

since interpolation not interpret interpolated values @ all. that's why added /e.

s/$search_pat/$replace_code/e 

in above, value of $replace_code expected perl code. last expression in $replace_code evaluates replacement string. perl code that? either of following do:

'http://www.facepalm.org/bbcswebdav/xid-' . $1  "http://www.facepalm.org/bbcswebdav/xid-$1" 

to place in $replace_code, can use of following:

my $replace_code = '"http://www.facepalm.org/bbcswebdav/xid-$1"'; $replace_code = q{"http://www.facepalm.org/bbcswebdav/xid-$1"}; $replace_code = q{'http://www.facepalm.org/bbcswebdav/xid-' . $1}; etc 

so end with:

my $search_re = qr{href="\k\@x\@embeddedfile\.requesturlstub\@x\@bbcswebdav/xid-([0-9]{9}_2)}; $replace_code = q{"http://www.facepalm.org/bbcswebdav/xid-$1"}; s/$search_re/$replace_code/gie; 

technically, don't need capture using lookahead:

my $search_re = qr{href="\k\@x\@embeddedfile\.requesturlstub\@x\@bbcswebdav/xid-(?=[0-9]{9}_2)}; $replace_code = q{"http://www.facepalm.org/bbcswebdav/xid-"}; s/$search_re/$replace_code/gie; 

which means don't need /e:

my $search_re = qr{href="\k\@x\@embeddedfile\.requesturlstub\@x\@bbcswebdav/xid-(?=[0-9]{9}_2)}; $replace_str = 'http://www.facepalm.org/bbcswebdav/xid-' s/$search_re/$replace_str/gi; 

Comments

Popular posts from this blog

django - How can I change user group without delete record -

java - Need to add SOAP security token -

java - EclipseLink JPA Object is not a known entity type -