I think it will help if you add
use strict; -- in particular, when you do that, and add "my" where necessary, you will find that you misspelled the name of your hash in the while() loop condition:
while (my ($home, $topics)=each(%topics)){ # should be %ttopics
Also, you have this funny thing in the "tHelp" sub:
sub tHelp
{\%ttopics
my $startpoint=$target;
What is "\%ttopics" doing there? Even if that isn't a syntax error, I can't imagine what it's supposed to do, and I expect it is a mistake. Actually, the tHelp sub as a whole makes no sense. What is that sub supposed to do? Where is it called from? Should you perhaps be providing some parameters when you call it? --e.g.:
# some where in the part that calls tHelp:
tHelp( $param1, \@array ); # or whatever...
# in tHelp itself:
sub tHelp
{
my ( $param, $aref ) = @_;
...
}