I'd be inclined to use a lookup for the text to be replaced then use a regex driven substitution to do the heavy lifting:
#!/usr/bin/perl
use strict;
use warnings;
my %edits = (foo => 'bar', bar => 'foo');
my $value = 'This string is all barfoo, but a little Perl should swap
+the foos and bars';
my $match = '(' . join ('|', keys %edits) . ')';
$value =~ s/$match/$edits{$1}/g;
print $value;
Prints:
This string is all foobar, but a little Perl should swap the bars and
+foos
True laziness is hard work