Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: Array Element Substitution

by Kenosis (Priest)
on Aug 23, 2012 at 20:51 UTC ( #989378=note: print w/ replies, xml ) Need Help??


in reply to Array Element Substitution

aaron_baugher provided a good solution. Nevertheless, here's a longer (and not necessarily prettier nor essentially operationally different) option. It uses only one old/new file, where the old/new word pairs are tab delimited, e.g.:

Earth Host1 Jupiter Host2 Venus Host3 Mars Host4

It uses File::Slurp for file read/write operations. The regex matches the old words on word boundaries, in case you don't want to replace embedded 'words:'

use Modern::Perl; use File::Slurp qw/read_file write_file/; my $logFile = 'log.txt'; my $oldNewFile = 'oldNewFile.txt'; my $text = read_file $logFile; for(read_file $oldNewFile){ my ($old, $new) = split; $text =~ s/\b$old\b/$new/g } say $text; #write_file( $logFile, $text );

If you're satisfied with the replacement results shown in the printed output, you can uncomment the #write_file... line to save the changes to log.txt. I recommend running it on a test file, first.

Hope this helps!


Comment on Re: Array Element Substitution
Select or Download Code
Re^2: Array Element Substitution
by Mac1 (Initiate) on Sep 04, 2012 at 21:47 UTC
    Hi, Apologize for the delay in responding, but this helped. I added some parts and inserted some additional error checking etc. Overall, I liked the approach using the slurp module. Thanks again very much.

      You're most welcome, Mac1! Am glad it helped...

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://989378]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (6)
As of 2014-08-21 02:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (127 votes), past polls