Hack #11. Run Perl from Emacs
Make Perl and Elisp play nicely together.
Emacs's long and varied history happens to embody much of Perl's "There's More Than One Way To Do It" approach to things. This is especially evident when you run a small bit of Perl code from within Emacs. Here's how to do just that.
The Hack
Suppose you really need to know the higher bits of the current value of time( ). In Perl, that's print time() 8>>;. You could use the shell-command command (normally on Control-Alt-One), and enter:
perl -e 'print time( ) >> 8;'
Emacs will dutifully run that command line and then show the output. Note though that you have to remember to quote and/or backslash-escape the Perl expression according to the rules of your default shell. This quickly becomes maddening if the expression itself contains quotes and/or backslashes or even is several lines long.
An alternative is to start an "Emacs shell" in an Emacs subwindow, then start the Perl debugger in that shell. That is, type alt-x
"
shell
" Enter, and then perl -de1 Enter, and then enter the expression just as if you were running the debugger in a normal terminal window:
%perl -de1Loading DB routines from perl5db.pl version 1.27 Editor support available. Enter h or \Qh h' for help, or \Qman perldebug' for more help. main::(-e:1): 1 DB<1>p time( ) >> 84448317 DB<2>
This means you don't have to escape the Perl expression as you would if you were sending it through a command line, but it does require you to know at least a bit ...