Not too bad, aside from small logic errors:
in reply to Troll removal program
You are declaring @website everytime the loops starts, thus it will always be empty, and no trolls will ever be warned...that is not good.
foreach my $offence(my @website)
Same type of thing here. You declare $troll inside the expression. The Troll variable is empty and so the warn function warns no one. The trolls run free once more.
$banned will never be true this way. The trolls shall live on...and on and on and on. See above for why. I'm feeling very redundant right now.
until my $banned eq "true";
This @ISA my cool %SIG