Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: need help in editing multiple word in a file

by lancer (Beadle)
on Nov 18, 2012 at 21:06 UTC ( #1004459=note: print w/replies, xml ) Need Help??


in reply to need help in editing multiple word in a file

I rewrote the code to make it work as described in your post.


replace_with_matches.pl

#!/usr/bin/perl use warnings; use strict; my $source = shift @ARGV; my $destination = shift @ARGV; my $matchfile = shift @ARGV; my @matches = (); open (MF, '<', $matchfile) or die $!; while (<MF>) { push @matches, $_; } close MF; # have a list of all matches my @input = (); open (IN, '<', $source) or die $!; while (<IN>) { 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, '>', $destination) or die $!; for my $output_line (@output) { print OUT $output_line; } close OUT;



Sample input files:


source.txt

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


matches.txt

l jerk j myth



Sample output:


result.txt

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

Replies are listed 'Best First'.
Re^2: need help in editing multiple word in a file
by vkp (Novice) on Nov 19, 2012 at 17:33 UTC

    thanks for ur kind help. I m new in coding, it is really appreciable to explain each step for beginner

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1004459]
help
Chatterbox?
[Corion]: Whee! Germanys Grand Central Airport (for Berlin, re-scheduled for the thrid or fourth time, to open now in 2018) has just fired their technical lead
[ambrus]: Corion: Is their budget estimate four times the initial estimate yet? Was the construction late by six months already three months after they started?
[marto]: I'll believe it when I see it. That's been due for many years now :P
[marto]: oddly the last time I was there I saw a zeppelin in flight for the first time
[Corion]: ambrus: I don't know how far the budget estimate has been overrun yet
[Corion]: marto: Heh ;) No, you were likely at Tegel or Schönefeld, the new one ("BER") will be somewhat outside of Berlin ;)
[marto]: Corion Schoenfeld, but my friend has been telling me about this new airport for about 7-8 years now :P
[marto]: I doubt it even exists as a building site :P

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (8)
As of 2017-02-23 11:58 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Before electricity was invented, what was the Electric Eel called?






    Results (346 votes). Check out past polls.