<?xml version="1.0" encoding="windows-1252"?>
<node id="1004459" title="Re: need help in editing multiple word in a file" created="2012-11-18 16:06:40" updated="2012-11-18 16:06:40">
<type id="11">
note</type>
<author id="874852">
lancer</author>
<data>
<field name="doctext">
&lt;p&gt;
I rewrote the code to make it work as described in your post.
&lt;/p&gt;
&lt;p&gt;
&lt;br/&gt;
&lt;b&gt;replace_with_matches.pl&lt;/b&gt;
&lt;/p&gt;
&lt;code&gt;
#!/usr/bin/perl

use warnings;
use strict;

my $source = shift @ARGV;
my $destination = shift @ARGV;
my $matchfile = shift @ARGV;



my @matches = ();

open (MF, '&lt;', $matchfile) or die $!;
while (&lt;MF&gt;)
{
	push @matches, $_;
}
close MF;


# have a list of all matches





my @input = ();

open (IN, '&lt;', $source) or die $!;
while (&lt;IN&gt;)
{
	push @input, $_;
}
close (IN);




# have all input lines in an array



my @output = ();

NEXT_INPUT_LINE:
for my $input_line (@input)
{
	
	# check every input line 1 time


	NEXT_MATCH_PAIR:
	for my $match_pair (@matches)
	{
		my @DATA = split (/\s/, $match_pair);
		my $matcher = $DATA[0];
		my $replacer = $DATA[1];
		
		
		# check all match pairs against 1 input line
		
		if ($input_line =~ /^$matcher/)
		{
			# make replacement
			$input_line =~ s/legend/$replacer/;
			push @output, $input_line;
			
			# jump to next input line
			next NEXT_INPUT_LINE;
		}
	}
	
	# if it gets here, there was no replacement
	
	
	# copy input line to output
	
	push @output, $input_line;
}




# have all replaced output in @output





# write @output to $destination


open (OUT, '&gt;', $destination) or die $!;
for my $output_line (@output)
{
	print OUT $output_line;
}
close OUT;

&lt;/code&gt;

&lt;p&gt;
&lt;br/&gt;
&lt;br/&gt;
Sample input files:
&lt;/p&gt;

&lt;p&gt;
&lt;br/&gt;
&lt;b&gt;source.txt&lt;/b&gt;
&lt;/p&gt;
&lt;code&gt;
lancer is a legend asdf
asdfwerg asdf wergdfv legend
pieces of trash
line 4 is cool and makes no sense
time for legends
time for christmas 
jesus is a legend

&lt;/code&gt;
&lt;p&gt;
&lt;br/&gt;
&lt;b&gt;matches.txt&lt;/b&gt;
&lt;/p&gt;
&lt;code&gt;
l jerk
j myth

&lt;/code&gt;

&lt;p&gt;
&lt;br/&gt;
&lt;br/&gt;
Sample output:
&lt;/p&gt;

&lt;p&gt;
&lt;br/&gt;
&lt;b&gt;result.txt&lt;/b&gt;
&lt;/p&gt;
&lt;code&gt;
lancer is a jerk asdf
asdfwerg asdf wergdfv legend
pieces of trash
line 4 is cool and makes no sense
time for legends
time for christmas 
jesus is a myth

&lt;/code&gt;
</field>
<field name="root_node">
1004447</field>
<field name="parent_node">
1004447</field>
</data>
</node>
