use*_*275 4 perl tabs expansion
刚刚遇到在perl中进行tab扩展的代码,这里是代码:
1 while $string =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e;
Run Code Online (Sandbox Code Playgroud)
我测试它是否正常工作,但我太了解了这一点的新手,有人想解释一下为什么它有效吗?或任何可以帮助我理解这一点的相关材料的指针将不胜感激,非常感谢.
Perl允许您在正则表达式中嵌入任意代码作为替换表达式.
$& 是最后一个模式匹配的字符串 - 在这种情况下是一些制表符.
$` 是最后一个模式匹配所匹配的字符串之前的字符串 - 这可以让您知道前一个文本有多长,这样您就可以正确地将事物与列对齐.
例如,运行此对字符串"Something\t\t\tsomething else",$&是"\t\t\t"和$`是"Something".length($&)是3,因此最多需要24个空格,但是length($`)%8为1,所以为了使它每8个对齐一列,它会增加23个空格.