首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >emacs中正确的perl开关格式设置

emacs中正确的perl开关格式设置
EN

Stack Overflow用户
提问于 2009-10-28 22:08:33
回答 2查看 746关注 0票数 3

编辑:在阅读了回复后,我相信答案是“不要这样做”,因此我标记了一个适当的回复作为官方的答案。

有什么简单的方法可以让emacs显示perl开关语句,比如perldoc.perl.org的切换页

下面是perldoc.perl.org的格式:

代码语言:javascript
复制
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" }
}

下面是在代码段上运行cperl-mode后的M-x indent-region格式:

代码语言:javascript
复制
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" }
    }

我有种莫名其妙的冲动要坚持如果-elsif结构.

ps。我认为描述了所需的过程,但是它看起来需要一段时间来解析。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-28 22:54:47

抱歉,我帮不了你。不过,我建议你坚持

代码语言:javascript
复制
if ( condition ) {

}
elsif( other_condition ) {

}
else {

}

而不是使用可怕的Switch.pm。请参阅尼古拉斯·克拉克给搬运工的信息

在下一个主要版本中,开关将从Perl核心发行版中删除。

更多关于PerlMonks的讨论。

正如Randal在下面的评论中指出的,从5.10perl版本开始,Perl有一个功能强大的替换,它不依赖于源代码过滤器:

代码语言:javascript
复制
use feature "switch";

given($_) {
   when (/^abc/) { $abc = 1; }
   when (/^def/) { $def = 1; }
   when (/^xyz/) { $xyz = 1; }
   default { $nothing = 1; }
}
票数 4
EN

Stack Overflow用户

发布于 2009-10-28 23:51:33

您是否考虑过使用分派表,如Mark在高阶Perl?中概述的那样

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1640446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档