$ dir =〜s / \ n //是什么意思?我需要帮助以一种简单的方式来解释它,以便理解

时间:2019-04-09 03:26:54

标签: regex perl

我正在尝试理解Perl代码,并且需要详细了解这一行的含义。

$dir =~ s/\n//

2 个答案:

答案 0 :(得分:7)

=~是绑定运算符;它告诉某些操作(匹配,替换,音译)它们的操作数是什么。因此$dir =~ s正在对变量$dir进行替换。

s/.../.../是替代操作;左侧部分是要匹配的正则表达式,右侧部分是用于替换匹配项的内插字符串。在您的情况下,您要匹配一个换行符并将其替换为空。

因此,您的代码基本上从$dir中删除了第一行换行符,或者,如果没有换行符,则什么也不做。

答案 1 :(得分:0)

$dir =~ s/\n//

LHS(左手边)是一个变量,包含将成为模式空间的值

  

=〜

是正则表达式绑定运算符,用作相等性测试和赋值,略有不同,取决于RHS(右手)正则表达式命令,在这种情况下为s(替代)

RHS是正则表达式命令/表达式

pattern space是可在上下文中应用正则表达式的任何字符串空间。

例如,

  

$ dir

变量包含data,其模式如下:

  

/ \ n /

将使用

(实际模式为\n,“ ///”或“ //”对仅是语言编译器可以识别的占位符)。如果它是正确的(T),即匹配/找到,则将执行替换操作,这里的替换操作为none,表示将简单地将其清除然后将结果分配给LHS,否则将其保留为LHS。 此模式通常应用于多行,多行本质上包含换行符 \ n 作为行定界符,可以由正则表达式引擎检测和控制,但除了在下一行创建下一个字符外,它是不可见的实体输出。 假设$ dir在多行中,则$ dir,即。模式空间为 data \ n ,最后$ dir变为 data