#!/usr/bin/perl -- use strict; use warnings; use Tk qw/ tkinit /; my $mw = tkinit; my $done; my $bu = $mw->Button( -text => "clickme", -command => sub { $done = "I am done " . gmtime; } , )->pack; for( 1 .. 3){ # $mw->deiconify; # $mw->raise; $mw->Popup; $bu->focus; $mw->waitVariable(\$done); ## like mainloop until $done changes print "I am $done again\n"; $mw->withdraw; ## hide, no more mainloop sleep 1; }