Différence (depuis la version majeure précédente)
(modification mineure) Pas de comparaisons disponibles.
Trucs et astuces pour programmer, debugger et survivre...
extraits de Perl Hacks de Chromatic, Damain Conway & Ovid Poe chez O'Reilly ISBN 0596-52674-1 (autre site, rechercher)
8 - Emacs : Ne sauvez pas du mauvais code Perl
Insérerez ce code dans .emacs :
;;
;;
(defvar perl-syntax-bin "/usr/local/bin/perl"
"the Perl binary used to check syntax.")
(defun perl-syntax-check-only ()
"Returns either nil or t depending on whether the current buffer passes perl syntax check."
(interactive)
(let ((buf (get-buffer-create "*Perl syntax check*")))
(let ((syntax-ok ( = 0 (save-excursion
(widen)
(call-process-region
(point-min) (point-max) perl-syntax-bin nil buf nil "-c"
))) ))
(if syntax-ok (kill-buffer buf)
(display-buffer buf))
syntax-ok )))
(defvar perl-syntax-mode nil
"Check perl syntax before saving." )
(make-variable-buffer-local 'perl-syntax-mode)
(defun perl-syntax-write-hook ()
"Check perl syntax during write-file-hooks for 'perl-syntax-mode'"
(if perl-syntax-mode
(save-excursion
(widen)
(mark-whole-buffer)
(not (perl-syntax-check-only)))
nil))
(defun perl-syntax-mode (&optional arg)
"Perl syntax check minor mode."
(interactive "P")
(setq perl-syntax-mode
(if (null arg)
(not perl-syntax-mode)
(> (prefix-numeric-value arg) 0 )))
(make-local-hook 'write-file-hooks)
(if perl-syntax-mode
(add-hook 'write-file-hooks 'perl-syntax-write-hook)
(remove-hook 'write-file-hooks 'perl-syntax-write-hook))
(if (not (assq 'perl-syntax-mode minor-mode-alist))
(setq minor-mode-alist
(cons '(perl-syntax-mode " Perl syntax")
minor-mode-alist))))
(eval-after-load "cperl-mode"
'(add-hook 'cperl-mode-hook 'perl-syntax-mode))
;;
;;
Utilisation : après l'édition dans Emacs, tapez M-x perl-syntax-mode. Essayez de sauvegarder avec C-s ou encore C-x C-c : si votre code est correct la sauvegarde a lieu ; sinon, les erreurs de syntaxe sont proposées dans une fenêtre. A vous de corriger.
9 - Emacs : Lancez Perl depuis Emacs
Insérez ce code dans .emacs :
;;
;;
(defun perl-eval (beg end)
"Run selected region as Perl code"
(interactive "r")
(shell-command-on-region beg end "perl")
)
(global-set-key "\M-\C-p" 'perl-eval)
;;
;;
Utilisation : dans Emacs, écrire quelques lignes de code. Marquer la région puis exécuter M-Cp
21 - lire un fichier à l'envers
Pratique pour lire un /var/log/messages
#!/usr/local/bin/perl
use strict;
use warnings;
use File::ReadBackwards?;
my $bw= File::ReadBackwards?->new($ARGV[0])
or die "Cannot open $ARGV[0] : $! \n";
until ( $bw->eof ) {
print $bw->readline ;
}
|