Bonjour à tous,
dans mon programme perl j'utilise une interface Tk. Il y a une fenêtre principale contenant 3 objets "Text". Je mets à jour le contenu de ces fichiers grâce à la méthode "repeat". Un extrait de mon code:
Je souhaiterais réaliser des opérations plus complexes mais surtout qu'une seule fois. Par exemple si je reprends la première partie de mon code;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 my $top = MainWindow()->Toplevel(-title => 'log'); my $OIText = $top->Scrolled('Text', -scrollbars => 'se', -wrap => 'none', -width => 120, -height => 20); my $DataText = $top->Scrolled('Text', -scrollbars => 'se', -wrap => 'none', -width => 120, -height => 20); my $IOText = $top->Scrolled('Text', -scrollbars => 'se', -wrap => 'none', -width => 120, -height => 20); $OIText->pack(-fill => 'both'); $DataText->pack(-fill => 'both'); $IOText->pack(-fill => 'both'); open(my $OIFH, "OIBufferFile"); $OIText->repeat(50, sub { my @lines = <$OIFH>; if (scalar(@lines) > 0) { $OIText->insert('end', @lines); $OIText->see('end'); } }); open(my $DataFH, "DataBufferFile"); $DataText->repeat(10, sub { my @lines = <$DataFH>; if (scalar(@lines) > 0) { $DataText->insert('end', @lines); $DataText->see('end'); } }); open(my $IOFH, "IOBufferFile"); $IOText->repeat(100, sub { my @lines = <$IOFH>; if (scalar(@lines)) { $IOText->insert('end', @lines); $IOText->see('end'); } });
Après maintes recherches, je n'ai toujours pas trouvé la
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 $OIText->METHODE_EXECUTEE_UNE_FOIS( sub { open(my $OIFH, "OIBufferFile"); while(my $line = <$OIFH>) { # je fais plein de trucs super compliqués: # code volumineux $OIText->insert('end', $line); $OIText->see('end'); } close($OIFH); }); # TRES IMPORTANT l'interprétation du code se poursuitqui comme vous l'aurez remarqué se comporte comme un
Code : Sélectionner tout - Visualiser dans une fenêtre à part METHODE_EXECUTEE_UNE_FOIS.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $thread->detach()
Merci d'avance pour votre aide,
JD
Partager