我正在尝试理解Perl代码,并且需要详细了解这一行的含义。
$dir =~ s/\n//
答案 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