Frage

Edit:. Nach den Antworten zu lesen, ich glaube, die Antwort ist „dies nicht tun“, also markierte ich eine entsprechende Antwort als offizielle Antwort

Gibt es eine einfache Möglichkeit, Emacs zu bekommen perl Switch-Anweisungen angezeigt werden wie die perldoc.perl.org Schalter Seite rel="nofollow ?

Hier ist die Formatierung auf 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" }
}

Hier ist die Formatierung in cperl-mode nach M-x indent-region auf dem Snippet ausgeführt wird:

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" }
    }

Ich habe einen unerklärlichen Drang zu halten mit if-elsif Konstrukten ...

ps. Ich denke, diese den gewünschten Prozess beschreibt, aber es sieht aus wie es eine Weile dauern würde zu analysieren.

War es hilfreich?

Lösung

Leider kann ich nicht Ihnen mit Emacs helfen. Allerdings werde ich empfehlen, dass Sie halten mit

if ( condition ) {

}
elsif( other_condition ) {

}
else {

}

anstatt die gefürchteten Switch.pm verwenden. Siehe Nicholas Clark Nachricht an perl5.porters :

  

Schalter werden von der Perl-Core-Distribution in der nächsten Hauptversion entfernt werden.

Weitere Diskussion über PerlMonks .

Wie Randal Schwartz Punkte unten in einem Kommentar aus, ab der Version 5.10 Perl verfügt über eine leistungsstarke Ersatz , die nicht auf Quellenfilter abhängt:

use feature "switch";

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

Andere Tipps

Haben Sie darüber nachgedacht, eine Dispatch-Tabelle, als Mark Jason Dominus skizziert in Higher -Auftrag Perl?

Wenn cperl ist es nicht richtig Formatierung ausprobieren perltidy.

Hier ist eine nette Funktion perltidy innerhalb Emacs auf dem aktuellen Bereich auszuführen:

;; 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)))
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top