haj has asked for the wisdom of the Perl Monks concerning the following question:

Emacs comes with two different major modes to edit Perl code: perl-mode and cperl-mode.

perl-mode is somewhat stuck with the Perl syntax of 5.14, has less features, but a cleaner implementation. cperl-mode is up to date with Perl 5.38 and has deeper understanding of Perl syntax, but a somewhat arcane implementation, most of it written in the previous century.

With all due respect to TIMTOWTDI, maintaining two major modes turns out to be not enough fun in the long run, and last week Stefan Kangas opened a wishlist item to Making perl-mode.el obsolete.

The mail thread shows that some people prefer perl-mode because it is less "colorful" and intrusive than cperl-mode. Therefore, the idea is to enable cperl-mode to (optionally) look like and behave like perl-mode. That way, perl-mode.el can be obsoleted without making those users uncomfortable: perl-mode would continue to exist as a custom theme of cperl-mode.

Users of perl-mode are now encouraged to try cperl-mode, and to report bugs against cperl-mode where they prefer the behavior of perl-mode. This has already started. The "current" cperl-mode.el is available from the repository: cperl-mode.el and is supposed to work with Emacs 26 and newer.

Keep the reports going!

This article also appears on blogs.perl.org.

Edited: Fixed the link to blogs.perl.org. Thanks to hippo for noticing!

  • Comment on Writing Perl with Emacs: Are there perl-mode users around?

Replies are listed 'Best First'.
Re: Writing Perl with Emacs: Are there perl-mode users around?
by choroba (Cardinal) on Sep 25, 2023 at 14:33 UTC
    The only thing I do when I notice I'm in perl-mode is M-x cperl-mode. I vaguely remember using perl-mode on a machine where cperl-mode wasn't available, as it was better than nothing, but it felt like driving with the handbrake on.

    map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]
Re: Writing Perl with Emacs: Are there perl-mode users around?
by Smonff (Monk) on Sep 27, 2023 at 14:42 UTC

    I started using Perl in 2011. At the time, all the books I read recommended cperl-mode over perl-mode, I just used it without questioning this fact since then. On the color-side, I like to have e.g. new class feature, or Moose syntax colored lightly (noticed today I missed Moose highlighting in a Docker container and was a bit sad about it). A long time ago, I remember cperl had a weird color-highlighting for @arrays and %hashes (with a not-so-necessary background color), but it seems to have disappeared (or maybe I customized it, not sure). Otherwise, same thing as choroba!

    🌸
      > weird color-highlighting for @arrays and %hashes

      Some background:

      The "faces" (emacs lingo for text style) for arrays and hashes are specific to cperl-mode, while all other faces are standard (c-mode has no need for sigils)

      This means if you load-theme another "theme" (the default is commonly known as "fruit salad") standards like font-lock-constant-face are covered, while cperl-array-face is often forgotten and still looks weird.

      I think I customized cperl-hash-face etc at some point to be derived from standard faces like font-lock-variable-name-face

      But recently I got bitten again when giving a talk, where reveal.js was taking the highlighting of code from emacs and arrays looked "weird" again.

      Cheers Rolf
      (addicted to the Perl Programming Language :)
      see Wikisyntax for the Monastery

        The "special" faces in cperl-mode are one of the things which seem to annoy perl-mode users. I didn't expect many of them here, in a Perl-only forum, but they contribute to the discussion in the Emacs lists. Some of the themes which ship with Emacs (e.g. the Modus themes by Protesilaos Stavrou) map these faces to standard faces, which makes them look "nice" in light and dark mode, but they are somewhat ... inconsistent. And none of the themes takes cperl-nonoverridable-face into consideration.

        As a part of the merge of Perl modes, the faces might undergo some refactoring anyway: cperl-hash-face and cperl-array-face will probably indeed end up as inheriting from font-lock-variable-name-face with some extra decoration (perl-mode uses underline for both hashes and arrays, I'd like to keep them distinguishable). The comments by LanX and Smonff suggest that I can get away with that. :-) cperl-nonoverridable-face will inherit from whatever is used for overridable builtins (font-lock-builtin-face comes into mind).

        Some "standard" faces are not (yet) used by cperl-mode, and Emacs 29.1 brings more standard faces which make sense for cperl-mode.

        All that will take some time, though.

Re: Writing Perl with Emacs: Are there perl-mode users around?
by Munkey (Novice) on Nov 28, 2023 at 16:30 UTC
    Yup, still using perl mode happily. Way less busy than cperl-mode, I had some issues with indentation in cperl-mode (probably fixable, but meh), and it does all I really need. YMMV, but I like it still

      Yeah, making cperl-mode less busy is part of the exercise. Of course, I would love to learn about Perl constructs which cause problems in cperl-mode: At some (distant) point in time, M-x perl-mode will be implemented using the code of cperl-mode.el, so as part of the process such bugs should be eliminated.