我在一个开源项目中找到了这段代码。该路径将是UNIX路径并作为参数传递。我想知道以下代码实际上为我做了什么:
$path =~ s|/$||;
谢谢!
* *更新:
感谢您告诉我答案,但是,我想知道常见正则表达式匹配中的代码重写方式是什么?
我无法弄清楚用垂直条包围的那件。
倒数第二个竖条是什么意思?谢谢!
答案 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/\/$//
哪个不可读。