Try this one. I don't have nmap so I used something else that would produce output.
#!/usr/bin/perl
# http://perlmonks.org/?node_id=1176994
use strict;
use warnings;
use Tk;
use Tk::IO;
my $tester;
my $mw = MainWindow->new;
my $b1 = $mw->Button(-text => 'Go', -command => \&go)->pack();
my $b2 = $mw->Button(-text => 'Exit', -command => sub{exit} )->pack();
my $text = $mw->Scrolled('Text',-scrollbars=>'e')->pack;
MainLoop;
sub go
{
$tester = Tk::IO->new(
-linecommand => sub {$text->insert('end', shift()) },
);
$tester->exec('ls -l | head'); # command goes in here
}