in reply to TK Destroy func

$vary's scope is wrong. If you move "my $vary = 0" into sub dude where "my $varx" is, this will work more like the way you want (I promise). The way you have it, the value of $vary increases every time you push the button, instead of being set back to zero like $varx.

You should remove the "my $varx, my $vary" from the top. You only need them in the for loop of sub dude. You should start learning to program with "use strict" on. That means declaring all your variables the first time with my. I think that will also help prevent you from making these kind of mistakes. So the first part of this program would look like:
#!/usr/bin/perl -w use strict; use Tk; my $MainWindow = MainWindow->new; $MainWindow->geometry("420x420"); $MainWindow->configure(-background => "black"); my $m = 0; my $bfa = 0; my $n=0; my @ButtFunc; my @montharr; my @Jularr;
Getting used to "use strict" is important as apparently the next release of perl will not give you a choice about it. Once you start, it is easy and there is never a reason to go back.

Nice geometry ;) EST

PS. put line breaks in your code around 80 characters or something, at least when you post. I can't stand scrolling horizontally...