什么'$ path = ~s | / $ ||'在perl做什么?

时间:2014-03-05 01:55:33

标签: perl match

我在一个开源项目中找到了这段代码。该路径将是UNIX路径并作为参数传递。我想知道以下代码实际上为我做了什么:

$path =~ s|/$||;

谢谢!

* *更新:

感谢您告诉我答案,但是,我想知道常见正则表达式匹配中的代码重写方式是什么?

我无法弄清楚用垂直条包围的那件。

倒数第二个竖条是什么意思?谢谢!

1 个答案:

答案 0 :(得分:1)

此代码将删除/中字符串末尾的斜杠$path。所以,如果你有

$path = "foo/bar/";

你会得到

$path = "foo/bar";

这是s///运算符的变体,其中分隔符已从/更改为|,例如s|||。使用s///运算符,您可以将斜杠/交换为几乎任何其他字符。例如

s!foo!bar!
s{foo}{bar}
s#foo#bar#
s?foo?bar?

更改分隔符的原因通常是这样的字符出现在正则表达式中,它在此处执行。如果你的正则表达式没有更改分隔符,它将如下所示:

s/\/$//

哪个不可读。