si tu boucle tu ne laisse plus Tk gerer ses evenements (rafraichissement, etc...)
 
bon deja dans ta boucle tu n'a pas à remettre le texte en permanance, il te suffit de trouner dans le vide:
Code :
 - $message->configure(-text => "Attente" );
 - 1 while ( -z "result.txt" );
 - $message->configure(-text => "Ok" );
 
  | 
 
ensuite si tu faix ca tu va utiliser 100% de ton CPU à tourner comme un fou pour pas grand chose. Donc tu peux deja ajouter des petites pauses:
Code :
 - $message->configure(-text => "Attente" );
 - while ( -z "result.txt" ) {
 - 	select(undef,undef,undef, 0.01);
 - }
 - $message->configure(-text => "Ok" );
 
  | 
 
le select(undef,undef,undef, 0.01) va simplement faire une pause de 0.01 seconde
 
ensuite il faudrait que tu permete à Tk de gerer ses evenements pendant que tu boucle:
 
Code :
 - # $mw = fenetre principale
 - $message->configure(-text => "Attente" );
 - while ( -z "result.txt" ) {
 - 	select(undef,undef,undef, 0.01);
 - 	$mw->update;
 - }
 - $message->configure(-text => "Ok" );
 
  | 
 
et ensuite, le fin du fin serais de ne pas avoir de boucle mais de demander à Tk de gerer cette attente lui meme, avec ses timer:
 
Code :
 - # $mw = fenetre principale
 - $message->configure(-text => "Attente" );
 - my $timer;
 - # toutes les 100ms, ca doit deja largement suffire
 - $timer = $mw->repeat(100, sub{
 - 	if (not -z "result.txt" ) { # ou if -s...
 -   $timer->cancel; # on cancel le timer pour ne plus qu'il tourne
 -   $message->configure(-text => "Ok" );
 -   ...
 - 	}
 - });
 
  |