首页 > 解决方案 > m! 是什么意思?在这个 perl 语法中意味着

问题描述

在尝试调试我在使用 git-svn 和 --ignore-paths 选项时遇到的问题时,我遇到了这个我不理解的 perl 表达式,并且无法在 perl 文档中找到任何类似的东西。

$path =~ m!$self->{ignore_regex}! 

我对此的理解是,这将 $path 字符串与 ignore_regex 匹配,但它似乎与我期望的任何内容都不匹配。我不明白的部分是m! !周围$self->{ignore_regex}

我应该如何阅读这种语法?

标签: perl

解决方案


这是匹配运算符

m!...!更常写为/.../,但它们是 100% 相同的。

如果"/"是分隔符,则首字母m是可选的。使用 ,m您可以使用任何一对非空白 (ASCII) 字符作为分隔符。这对于匹配包含"/", 以避免 LTS(倾斜牙签综合症)的路径名特别有用。[...]

例如,以下是相同的:

$path =~ /$self->{ignore_regex}/
$path =~ m/$self->{ignore_regex}/
$path =~ m^$self->{ignore_regex}^
$path =~ m{$self->{ignore_regex}}

有问题的代码检查 in 中的字符串是否与 .$path中的正则表达式模式匹配$self->{ignore_regex}


推荐阅读