3

我完全迷失在这行 perl 代码中

$path =~ s|^\./|~/|; #change the path for prettier output

我假设它与正则表达式有关。我对正则表达式有一些了解,但我似乎无法弄清楚这一点。

什么是=~,为什么有 s 以及正则表达式如何在 perl 中表达?

4

2 回答 2

6

=~是一个绑定运算符。它将替换(因此是s)应用于变量$path。替换有两部分——正则表达式和替换。在这种情况下,它们由|字符分隔。正则表达式是

^\./

^代表字符串的开头。\.代表一个字面点,/代表它自己。因此,./字符串的开头被替换为~/.

于 2013-06-10T20:16:27.847 回答
4

=~标量表达式绑定到模式匹配,s用于替换

它所做的是将行首与 ./ 匹配,然后将其替换为 ~/

至于| 管道,您可以使用任何非空白字符来分隔正则表达式的部分,您可以使用 ^ 或 & 或 q 或 m 或 { 任何东西.. 大多数人使用 / 是为了可读性,但对于您可能匹配 / 使用其他内容的情况。

希望这可以帮助。

于 2013-06-10T20:15:38.977 回答