Here is the code: #!/usr/bin/perl -wie my $foo = "john jacob jingleheimerschmidt"; my $replacement = "bob"; my $line = "john jacob jingleheimerschmidt"; if($line =~ m/(john\s)(jacob\s)(jingleheimerschmidt)/ ){ print "\$replacement = $replacement\n"; print "\$2 = $2\n"; print "\$3 = $3\n"; $newline = $replacement . $2 . $3; print "\$newline = $newline\n"; s/$line/$newline/ex; } print $foo; Here is the output: ./test.pl $replacement = bob $2 = jacob $3 = jingleheimerschmidt $newline = bobjacob jingleheimerschmidt Use of uninitialized value in substitution (s///) at ./test.pl line 14. john jacob jingleheimerschmidt