perl/Tk

トップ ページ

このメッセージに返信
著者: guilde
日付:  
To: guilde
題目: perl/Tk
Salut la Guilde,

J'ai un petit problème avec Perl/Tk: c'est un peu limite hors sujet mais
je sèche depuis 15 jours donc si quelqu'un pouvait me dépanner, cela
m'arrangerait... Je suis en train d'écrire un petit utilitaire pour linux
et j'ai besoin d'éditer un fichier de log. Comme celui-ci varie dans le
temps, j'utilise les fileevent pour gérer l'affichage. Voici un bout du
script:

$visualise_log = $second->Frame
$visualise_log->pack();
$text_log = $visualise_log->Text();
$text_log->pack();
# $log est le nom d'un fichier existant
open ("$LOG", "$log");
$visualise_log->fileevent($LOG, "readable", [\&lecture_fichier,
$text_log, $LOG]);

sub lecture_fichier {
  my $text_log=$_[0];
  my $LOG=$_[1];
  if (eof($LOG))
    {
      $visualise_log->fileevent($LOG, "readable", undef);
      return;
    };
  if (sysread ($LOG, $buf, 8192))
    {
      $text_log->insert('end',$buf);
    }
  else
    {
      $text_log->insert('end', "!!! ERREUR !!!  : fichier $log
corrompu");
      $visualise_log->fileevent($LOG, "readable", undef);
    };
}


Le "sysread" fonctionne parfaitement et m'affiche bien le fichier de log.
Simplement, au lieu d'attendre les nouvelles entrées du fichier, il passe
directement à la deuxième partie de la condition et gèle le fichier de
log. Je n'arrive pas à lui demander de rester sur le fichier et
d'afficher les (hypothétiques) nouvelles entrées...

Bien sympas seront ceux qui me dépanneront ;-)

Linuxement,

PK