This creates a hash where the key is a regex search, and its value is the replacement. I don't know why backreferencing isn't working.
Where the search string (key) is: <CM>HTMLINSERT:<img src=([^>]+)></CM>
The replacement (key's value) is: <figure><graphic url=$1/></figure></p>
Given the following input from TEXTFILE: The quick <CM>HTMLINSERT:<img src="grab me!"></CM> brown fox
My OUTFILE reads: The quick <figure><graphic url=$1/></figure> brown fox
And what I want is: The quick <figure><graphic url="grab me!"/></figure> brown fox
open FSR, "ultimate_fsr.txt" or die "Couldn't open file: $!"; my %fsr_hash = ( ); my $search = undef; my $replace = undef; while (<FSR>) { ($search, $replace) = ($_=~m/"(.*?)" "(((\\")|[^"])*)"/); if ($search ne '' && $replace ne '') { $fsr_hash{$search} = $replace; } } open TEXTFILE, "test_file.txt" or die "Couldn't open file: $!"; open OUTFILE, ">output.txt" or die "Couldn't open file: $!"; while (my $line = <TEXTFILE>) { foreach my $key (keys %fsr_hash) { $line =~ s/$key/$fsr_hash{$key}/g; } print OUTFILE "$line"; }
Thanks for your kind attention!
In reply to backreferencing fails in a search and replace with a hash by tonyz
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |