编辑: 阅读了回复后,我相信答案是“不要这样做”,因此我将一个适当的回复标记为官方答案。
有没有一种简单的方法让emacs显示像perldoc.perl.org的 switch页面那样的perl switch语句呢?
这是perldoc.perl.org上的格式:
use Switch;
switch ($val) {
case 1 { print "number 1" }
case "a" { print "string a" }
case [1..10,42] { print "number in list" }
case (\@array) { print "number in list" }
case /\w+/ { print "pattern" }
case qr/\w+/ { print "pattern" }
case (\%hash) { print "entry in hash" }
case (\&sub) { print "arg to subroutine" }
else { print "previous case not true" }
}
以下是在代码片段上运行
M-x indent-region
后中的格式:
use Switch;
switch ($val) {
case 1 { print "number 1" }
case "a" { print "string a" }
case [1..10,42] { print "number in list" }
case (\@array) { print "number in list" }
case /\w+/ { print "pattern" }
case qr/\w+/ { print "pattern" }
case (\%hash) { print "entry in hash" }
case (\&sub) { print "arg to subroutine" }
else { print "previous case not true" }
}
我有一种难以解释的冲动,想坚持使用if-elsif结构...
附注:我认为this描述了所需的过程,但似乎需要花费一些时间进行解析。
Switch.pm
时遇到了很多麻烦,如果不使用5.10版本,我认为最好还是避免使用它。 - Sinan Ünür