(defun cperl-save-buffer (&optional args) (interactive "p") (if (buffer-modified-p) (perltidy-buffer)) (save-buffer t)) (defun perltidy-buffer () (interactive) (save-excursion (shell-command-on-region (point-min) (point-max) "perltidy -st" nil t shell-command-default-error-buffer))) (add-to-list 'cperl-mode-hook (lambda () (substitute-key-definition 'save-buffer 'cperl-save-buffer cperl-mode-map global-map)))