我正在尝试进行简单的字符串替换,但没有成功。
#!/usr/bin/perl
$var = "M4S120_appscan";
$var1 = "SCANS";
$path =~ s/$var/$var1/;
print "Path is $path"
输出应该是
"Path is SCANS"
,但在 'output' 中未打印任何内容。要在字符串中将“M4S120_appscan”替换为“SCANS”:
$str = "Path is M4S120_appscan";
$find = "M4S120_appscan";
$replace = "SCANS";
$str =~ s/$find/$replace/;
print $str;
如果这就是你想要的。
$find
或$replace
包含特殊字符,这个方法还管用吗?为什么不使用$str =~ s/M4S120_appscan/SCANS/
(也许加上/g
以替换所有匹配项,而不仅仅是第一个匹配项)? - Thilo替换是正则表达式的搜索和替换。请点击这里阅读更多信息:
$var = "M4S120_appscan";
$var =~ s/M.+\_.+can/SCANS/g; # /g replaces all matches
print "path is $var";
替换运算符s///
需要三个参数:要进行替换的字符串,在您的示例中是一个$path
变量,搜索项($var
)和替换项$var1
。
正如您所看到的,您试图在空字符串内用" M4S120_appscan "替换为" SCANS ",因为$path未初始化。您需要在进行替换之前初始化$path,例如:
$path = "M4S120_appscan";
print "Path is $var1"
呢?这个替换是用来做什么的? - Thilouse strict
和use warnings
。如果你的教程/书籍没有这个内容,那么它已经过时了。相反,可以查看Perl标签wiki,里面链接了非常好的最新资源。 - simbabque