我是perl的初学者,我对模式匹配有疑问.我在perl中遇到了一行写的
$variable =~ s-/\Z--;
Run Code Online (Sandbox Code Playgroud)
随着代码的继续,分配了另一个变量
$variable1 =~ s-/--;
Run Code Online (Sandbox Code Playgroud)
你能告诉我这两行是做什么的吗?我想知道什么是意思s-/\Z--和s-/--意思.
$variable =~ s-/\Z--;
Run Code Online (Sandbox Code Playgroud)
-在这里用作分隔符.但是,最佳做法建议您使用/或{}作为分隔符.
它可以重写为:
$variable =~ s{/\Z}{}; # remove a / at the end of a string
Run Code Online (Sandbox Code Playgroud)
考虑:
$variable1 =~ s-/--;
Run Code Online (Sandbox Code Playgroud)
同样,它可以重写为:
$variable1 =~ s{/}{}; # remove the first /
Run Code Online (Sandbox Code Playgroud)
s///Perl中的运算符是一个替换操作,它使用一种称为正则表达式的特殊模式对字符串执行搜索和替换.您可以在Perl附带的手册页中阅读有关正则表达式和Perl模式匹配的更多信息:
如果您的系统上没有这些内容,请尝试在Google上搜索相同内容.
将替换应用于变量是由=~运算符完成的.所以下面$var用'bar' 替换变量中'foo'的所有实例.
$var =~ s/foo/bar/;
Run Code Online (Sandbox Code Playgroud)
所有Perl操作符都记录在'perlop'手册页上.
即使最常见的分隔符是斜杠(因此为s ///),您也可以使用任何其他标点符号作为分隔符.所以在这种情况下,作者决定使用dash(-)作为分隔符.
以上是使用dash作为分隔符的相同代码行:
$var =~ s-foo-bar-;
Run Code Online (Sandbox Code Playgroud)
在您的情况下,破折号似乎没有为代码添加任何清晰度,因此最好更新它以使用传统的斜杠.
| 归档时间: |
|
| 查看次数: |
5883 次 |
| 最近记录: |