# Use something more sophisticated which escapes properly. sub quote { qq!"$_[0]"! } my ($x, $y, $z) = qw/ X Y Z /; my $str = 'Foo $x bar $y baz $z'; print $str; # Foo $x bar $y baz $z print quote($str); # "Foo $x bar $y baz $z" print eval quote(str); # Foo X bar Y baz Z