tonyz has asked for the wisdom of the Perl Monks concerning the following question:
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!
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: backreferencing fails in a search and replace with a hash
by ikegami (Patriarch) on Jul 31, 2008 at 20:04 UTC | |
|
Re: backreferencing fails in a search and replace with a hash
by injunjoel (Priest) on Jul 31, 2008 at 20:04 UTC | |
|
Re: backreferencing fails in a search and replace with a hash
by almut (Canon) on Jul 31, 2008 at 21:06 UTC | |
|
Re: backreferencing fails in a search and replace with a hash
by moritz (Cardinal) on Jul 31, 2008 at 20:05 UTC | |
by tonyz (Novice) on Aug 02, 2008 at 14:40 UTC | |
|
Re: backreferencing fails in a search and replace with a hash
by toolic (Bishop) on Jul 31, 2008 at 20:28 UTC |