emacs中正确的perl开关格式
编辑:阅读回复后,我相信答案是“不要这样做”,因此我标记了一个适当的回复作为正式答案 有没有一种简单的方法让emacs显示perl开关语句,比如perldoc.perl.org 以下是perldoc.perl.org上的格式:emacs中正确的perl开关格式,perl,emacs,indentation,switch-statement,Perl,Emacs,Indentation,Switch Statement,编辑:阅读回复后,我相信答案是“不要这样做”,因此我标记了一个适当的回复作为正式答案 有没有一种简单的方法让emacs显示perl开关语句,比如perldoc.perl.org 以下是perldoc.perl.org上的格式: use Switch; switch ($val) { case 1 { print "number 1" } case "a" { print "string a" } case [1..10,42] { pri
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缩进区域
后cperl模式下的格式设置:
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" }
}
我有一种莫名其妙的冲动要坚持如果埃尔西夫
另外,我认为描述了所需的过程,但似乎需要一些时间来解析。很抱歉,我无法帮助您处理emacs。但是,我建议您坚持使用
if ( condition ) {
}
elsif( other_condition ) {
}
else {
}
不要使用可怕的开关.pm
。见:
在下一个主要版本中,将从Perl core发行版中删除该开关
更多关于的讨论
正如Randal Schwartz在下面的评论中指出的,从5.10版开始,Perl有一个强大的、不依赖于源过滤器的功能:
use feature "switch";
given($_) {
when (/^abc/) { $abc = 1; }
when (/^def/) { $def = 1; }
when (/^xyz/) { $xyz = 1; }
default { $nothing = 1; }
}
您是否考虑过使用分派表,如Mark Jason Dominus在中概述的那样。如果cperl没有正确格式化分派表,请尝试perltidy
下面是一个在当前区域的Emacs中运行perltidy的简洁函数:
;; Slick functions to run perltidy in place
(defun perltidy-region ()
"Run perltidy on the current region."
(interactive)
(save-excursion
(shell-command-on-region (point) (mark) "perltidy -q" nil t)))
;; 运行perltidy的灵活功能
(defun perltidy区域()
“在当前区域上运行perltidy。”
(互动)
(省去远足
(区域(点)上的shell命令(标记“perltidy-q”nil t)))
正在删除Switch.pm,因为它已按给定/何时设置为本机。因此,您关于移除开关的评论是好的,但您将其替换为given/when,而不是Perl4构造。:)@兰德尔很公平。但是在早期版本中,我对Switch.pm感到头疼,如果不使用5.10,最好不要使用它,IMHO。谢谢提醒!我绝对不知道Switch.pm的给定/时间或问题。这也为我节省了很多可能会导致错误的重构时间/精力。值得注意的是,cperl模式解析给定的/when结构比StackOverflow解析器要好得多;)cperl模式6.2以与switch/case相同的方式给出/时,也不会将其作为关键字突出显示。我想那是在待办事项清单上!没有。谢谢你提供的信息。我可以肯定地看到分派表的使用,但考虑到这个问题,这有点脱离主题。