倾斜牙签综合征
✍ dations ◷ 2024-12-25 13:45:39 #倾斜牙签综合征
倾斜牙签综合征(leaning toothpick syndrome,LTS)是指在计算机程序设计中,由于表达式包含了大量的转义字符而使代码变得难以阅读,通常是指反斜线("")开头的转义字符序列。
Perl语言的官方文档引入了这一术语,用于描述Unix风格的正则表达式中大量的前向斜线。
LTS出现在程序设计语言与环境中,包括用于匹配统一资源定位符(URI)的模式(Pattern (software)),以及输出被引用文本的程序中,许多自产生程式属于后一类。
下述Perl正则表达式用来匹配在某个FTP服务器的pub
目录下的文档的URI:
m/ftp://*/pub//
Perl通过允许正则表达式使用其它分界符来解决倾斜牙签综合症。例如,下述三个正则表达式均等价于上例:
m{ftp://*/pub/} m#ftp://*/pub/# m!ftp://*/pub/!
被引用文本的例子
以下Perl样例程序用于输出HTML链接的文本,其中URL与显示文本分别存于变量$url
与$text
之中,代码如下:
print "<a href="$url">$text</a>";
注意上述程序中使用反斜线转义双引号。如果使用单引号括起上述字符串表达式,在Perl中是不可行的,因为Perl对单引号字符串不执行变量展开:
print '<a href="$url">$text</a>'
在许多语言中使用printf
函数是可行的办法(Perl,C,PHP):
printf("<a href="%s">%s</a>", $url, $text);
在Perl中使用qq
即可用任意字符代替双引号:
print qq{<a href="$url">$text</a>}; print qq|<a href="$url">$text</a>|; print qq(<a href="$url">$text</a>);