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!
In reply to Re: Array Element Substitution
by Kenosis
in thread Array Element Substitution
by Mac1
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |