2017-08-07 9 views
2

J'exécute un script Perl dans le cadre d'un autre code plus grand. Mon code perl ouvre une fenêtre contextuelle basée sur la valeur du statut (succès ou échec). Ce problème est, le script ne continue pas d'exécuter d'autres parties du code jusqu'à ce que je ferme cette fenêtre pop-up créée par Perl. Comment puis-je resoudre ceci. S'il vous plaît aider. Je veux garder la fenêtre ouverte et continuer à exécuter d'autres parties du script parent. J'utilise le script Perl suivant pour ouvrir le pop up.Comment continuer à exécuter une autre partie du code alors que la fenêtre contextuelle est ouverte en perl

#!/usr/local/bin/perl 
use Tk; 
my $status = shift; 
my $opt = shift; 
my $mw = MainWindow->new; 
$mw->title("DONE"); 
if($status eq "success") { 
    $mw->Label(-text => "$opt dummyFill for 'test1' succeeded",  -background => "green")->pack(-ipadx => 10, -ipady => 10); 
    $mw->Button(-text => "Close", -background => "green", -command => sub { exit})->pack(-fill => "x"); 
} else { 
    $mw->Label(-text => "$opt dummyFill for 'test1' FAILED", -background => "red")->pack(-ipadx => 10, -ipady => 10); 
    $mw->Button(-text => "Close", -background => "red", -command => sub { exit})->pack(-fill => "x"); 
} 
$mw->geometry("+250+50"); 
MainLoop; 

J'apprécie votre aide.

Merci Sam

Répondre

2

Votre script principal attend probablement un retour de l'appel à Perl. Dans Tk Perl reste dans le MainLoop soit vous appelez la routine de sortie spécifique TK, qui ferme la fenêtre principale, ou appelez directement destroy sur votre objet fenêtre principale.

La solution n'est pas dans ce script mais dans le code appelant. Le code appelant doit forcer l'exécution de ce script Perl dans un processus ou un thread distinct.

+0

Oui, vous avez absolument raison. Mon script Shell n'allait pas de l'avant sans moi fermant la fenêtre. J'ai donc fourchu les processus et cela a fonctionné. Merci beaucoup pour votre suggestion. Je vous en suis reconnaissant ! – sam