如何在 Perl 中替换字符串?

Sat*_*mar 4 regex perl

我正在尝试做一个简单的字符串替换,但没有成功。

#!/usr/bin/perl

$var = "M4S120_appscan";
$var1 = "SCANS";

$path =~ s/$var/$var1/;

print "Path is $path"
Run Code Online (Sandbox Code Playgroud)

输出应该是"Path is SCANS",但它在“输出”中不打印任何内容。

Deq*_*ing 7

要将字符串中的“M4S120_appscan”替换为“SCANS”:

$str = "Path is M4S120_appscan";
$find = "M4S120_appscan";
$replace = "SCANS";
$str =~ s/$find/$replace/;
print $str;
Run Code Online (Sandbox Code Playgroud)

如果这是你想要的。

  • 如果`$find` 或`$replace` 包含特殊字符,这是否有效?为什么不是`$str =~ s/M4S120_appscan/SCANS/`?(也许用 `/g` 替换所有,而不仅仅是第一个匹配项) (3认同)

小智 0

替换运算符s///接受三个参数:我们要在其中进行替换的字符串(在您的示例中是一个$path变量)、搜索项 ( $var) 和替换项$var1

正如您所看到的,您尝试将空字符串中的“M4S120_appscan”替换为“SCANS”,因为 $path 未初始化。在进行替换之前需要初始化 $path,例如:

$path = "M4S120_appscan";
Run Code Online (Sandbox Code Playgroud)