Autres
AideEnLigne
CahierDeBrouillon
Présentation
Administration

MesLectures
[Journal d'Ophelia]
[Blog Larnac]
[Traitement texte en ligne]
[Kim Khal]

Informations
[Rue 89]
[Tele libre]

DNS etc
[Robtex]
Logins
Votre ID: 111
Nom:
Login utilisateur
Mot de passe éditeur

PerlHacks

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 ;
 }