The following code will also cause emacs to auto-perltidy anything you use cperl-mode with.
(add-to-list 'cperl-mode-hook
(lambda ()
(substitute-key-definition
'save-buffer
'cperl-save-buffer
cperl-mode-map
global-map)))
(defvar cperl-auto-tidy t)
(defun cperl-save-buffer (&optional args)
"Perltidy and save current buffer in visited file if modified."
(interactive)
(if (and (buffer-modified-p)
cperl-auto-tidy)
(perltidy-buffer))
(save-buffer))
(defun perl-buffer () (interactive (shell-command-on-region (point-mi
+n) (point-max) "perl" nil nil nil)))
(defun cperl-auto-tidy (&optional arg)
"Automatically perltidy (or not)"
(setq cperl-auto-tidy (if arg t nil)))
(defun cperl-toggle-auto-tidy ()
(interactive)
(setq cperl-auto-tidy (not cperl-auto-tidy)))
(defun perltidy-buffer ()
"Runs an entire buffer through perltidy."
(interactive)
(let ((orig-point (point)))
(shell-command-on-region
(point-min) (point-max)
"perltidy -st -se -q -syn" nil t shell-command-default-error-buff
+er)
(goto-char (if (<= orig-point (point-max))
orig-point
(point-max)))))