如何在perl脚本中替换字符串中的$

如何在perl脚本中替换字符串中的$,perl,Perl,我有一根绳子, $str=abc#$and@def 我尝试使用十六进制值替换“$” $str=~s/$/%26/g 但输出是abc 这可能是因为“$”被视为行或字符串的结尾 请让我知道你需要用\ $str =~ s/\$/%26/g 尝试用\: $str =~ s/\$/%26/g; 罗恩你的问题与你的替补无关;首先为字符串赋值时: $str = "abc#$and@def"; $和以及@def被视为要插值的变量 您需要转义符号或使用单引号(不插入变量): 而且你真的需要启用警告,这会告诉

我有一根绳子, $str=abc#$and@def

我尝试使用十六进制值替换“$”

$str=~s/$/%26/g

但输出是abc

这可能是因为“$”被视为行或字符串的结尾


请让我知道你需要用
\

$str =~ s/\$/%26/g

尝试用\:

$str =~ s/\$/%26/g;

罗恩

你的问题与你的替补无关;首先为字符串赋值时:

$str = "abc#$and@def";
$和
以及
@def
被视为要插值的变量

您需要转义符号或使用单引号(不插入变量):


而且你真的需要启用警告,这会告诉你你的任务就是问题所在。

这只适用于字符串中已转义的$。但是在myscenario中,它不是转义的,所以“$”被认为是字符串的结尾,解析就在这里停止!这肯定有效,你肯定还有其他问题。确保你的
使用严格在脚本的开头。看这里,谢谢,它正在工作!现在我有一个新问题,这个字符串是输入数组argv的一部分,所以当我运行foreach循环时,字符串的值只读到$,不能超过$。。如果我能在这方面得到帮助,我会很高兴的。对不起@Mini我不知道你的意思。可能会发布另一个问题,其中包括问题代码。我不喜欢听起来像一个讨厌n00b的老钩针人,但我正在考虑一个笼统的政策,对所有可以用
use strict解决的Perl问题进行否决;使用警告始终显示演示问题的完整程序(带输入)。
$str = 'abc#$and@def';
# or
$str = "abc#\$and\@def";