use Tk; $SIG{ CHLD } = sub{ wait }; my $top = new MainWindow; $top->Label(-text => 'Welcome to My Mail Program')->pack; $top->Button(-text => 'Start', -command => \&myStartRoutine )->pack; $top->Button(-text => 'Stop', -command => sub{ kill($pid); exit; } )->pack; $top->Label(-text => 'Enter server name')->pack; my $servname = $top->Entry(-width => 10); $servname->pack; $top->Button(-text => 'Configure', -command => sub{ print "The server name is: ",$servname->get() ,"\n"} )->pack; MainLoop; sub myStartRoutine { if( !($pid = fork) ) # child has the main loop looping for ever { while( 1 ) { print "program started\n"; sleep( 1 ); } } }