perl中的“$ file =〜/^\./”是什么意思?

时间:2016-08-22 15:08:20

标签: perl conditional-statements

我刚开始使用Perl,并且我得到了一个我不太了解的脚本。具体来说,我不明白这个条件行:

if ( -d "$dirPath\\$file" and not $file =~ /^\./ )

条件的第一部分是文件是否存在于目录中,但我不明白“not $ file =〜/^。/”,这是什么意思? 我通过互联网进行了一些研究,但却找不到任何东西。

2 个答案:

答案 0 :(得分:3)

=~是Perl的正则表达式运算符

它将$file与正则表达式^\.

匹配

简单地说这意味着

  • ^ - 匹配字符串的开头
  • \. - 搜索文字。字符

因此:如果文件名不以a开头,那么使用not运算符也会否定此表达式。然后这个表达式将返回true。

更多信息here

答案 1 :(得分:3)

该语句的not $file =~ /^\./部分测试标量$file中的字符串与正则表达式^\.

正则表达式检查^开头的字符串,然后是.

点(句点)必须使用反引号\进行转义,因为正则表达式中的点具有特殊含义(它表示任何单个字符)。

因此它将检查$file内的字符串是否以点开头。如果匹配则此操作将返回1,如果不匹配则返回0,not否定它。结果可以读作“如果文件不以点开头”。

您还可以使用!~运算符(与正则表达式运算符不匹配)来实现相同的结果:

if ( -d "$dirPath\\$file" and $file !~ /^\./ )

要在答案中链接一些ThisSuitIsNotBlack条评论,匹配运算符=~会记录在perl文档页面perlop中,可以使用perldoc perlop进行查看,并且可以在线查找Perl website。相关部分为Binding Operators。 Perl Regex有几个perl文档页面perlretutperldoc perlretut)和perlreperldoc perlre)。

相关问题