in reply to Perl - TK - Listbox insertion problem

sub show { my $line = $_; ... }

Arguments to routines are passed in the array @_, not $_. So either write

sub show { my $line = shift;

or

sub show { my ($line) = @_;

or

sub show { my $line = $_[0];

With that change, things should work just fine, provided the loop that reads from the socket is in the main/parent process — which it seems to be.