use Win32::GUI; $Win = new Win32::GUI::Window( -left => 341, -top => 218, -width => 300, -height => 191, -name => "Win", -text => "Window Title" ); $Win->Show(); $Win->AddLabel( -text => "Test", -name => "Test", -left => 121, -top => 72, -width => 49, -height => 16, -foreground => 0, ); $Win->AddButton( -text => "Do it", -name => "doit", -left => 100, -top => 90, -width => 65, -height => 24, ); Win32::GUI::Dialog(); sub doit_Click { $t1 = $Win->AddTimer('T1', 10); } sub T1_Timer { # This gets called over and over again $i++; $Win->Test->Change(-text => "$i"); # You can put code here to read # from a line from a socket or file # and the GUI won't freeze up. }