use Tk; use Tk::DialogBox; use strict; use warnings; my $mw = MainWindow->new(title => "Password Demo"); my $login_first_try = 1; my $id; my $passwd; while (1) { my $dialog = $mw->DialogBox(-buttons => ["OK", "Cancel"], -title => "Login"); my $instruction; if ($login_first_try) { $instruction = "Please provide id/passwd: "; $login_first_try = 0; } else { $instruction = "Failed to login, please try again: " } $dialog->add("Label", anchor => "w", text => $instruction)->pack(fill => "x"); my $id_text = $dialog->add("Entry", width => 30)->pack(); my $passwd_text = $dialog->add("Entry", show => "*", width => 30)->pack(); $id_text->focus(); if ($dialog->Show() eq "OK") { print "OK pressed, validate here, if okay last and quit the while loop" #............. } else { exit; } }