Autres
AideEnLigne
CahierDeBrouillon
Présentation
Administration

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

Informations
[Rue 89]

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

PerlHacks

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