假设我正在使用Emacs默认的Perl模式(即随Emacs 23.1.1一起提供的模式)编辑Perl文件或缓冲区。
是否有一种直接发送整个文件(或缓冲区)到Perl解释器并在单独的缓冲区中查看结果的方法?
有第三方模式可以运行不良的perl进程并与它们交互(例如inf-perl.el
),但是在emacs 23.1.1中没有内置的模式。
然而,一个简单的方法是使用shell-command-on-region
在perl中运行您的缓冲区。例如,此函数将在您的缓冲区上运行perl并在名为*Perl Output*
的缓冲区中显示输出:
(defun perl-on-buffer ()
(interactive)
(shell-command-on-region (point-min) (point-max) "perl" "*Perl Output*")
(display-buffer "*Perl Output*"))
使用 M-x perl-on-buffer 在perl缓冲区中运行它,或者像这样将其绑定到一个键:
(eval-after-load 'perl-mode
'(define-key perl-mode-map (kbd "C-c C-c") 'perl-on-buffer))
另一个选项是使用perl <filename>
作为编译命令来使用compile
/recompile
。这样可以在文件内容上工作,而不是缓冲区内容,并且具有使用C-x `
(next-error
)导航错误的额外优势。