类似于 this ,我如何在 Perl 中实现相同的功能?
我想转换:
C:\Dir1\SubDir1\` to `C:/Dir1/SubDir1/
我正在尝试按照 here 给出的示例进行操作,但是当我说类似的话时:my $replacedString= ~s/$dir/"/"; # $dir is C:\Dir1\SubDir1\
我得到一个编译错误。我试过逃避 /
,但我得到其他编译器错误。
最佳答案
= ~
与 =~
非常不同.第一个是赋值和按位否定,第二个是与正则表达式一起使用的绑定(bind)运算符。
你想要的是这样的:
$string_to_change =~ s/pattern_to_look_for/string_to_replace_with/g;
注意使用全局
/g
在整个字符串中进行更改的选项。在你的情况下,看起来你需要:$dir =~ s/\\/\//g;
如果你想要一个更易读的正则表达式,你可以交换分隔符:
s#\\#/#g;
如果要保留原始字符串,可以在替换之前复制它。也可以使用音译:
tr#\\#/#
-- 在这种情况下,您不需要全局选项。简而言之:
$dir =~ tr#\\#/#;
文档:
关于string - 如何在 Perl 中用正斜杠替换反斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8014556/