Ich kenn mich mit Tk nicht aus, allerdings:
Das schaut nach einem typischen "Container zu wenig aus". Pack alles was weg soll in einen eigenen Container, bevor du da einen ganzen Frame leerst um dann alles was doch hinsoll wieder per Hand draufschreibst.
Ansonsten:
Ich würd da irgendwie mehr Struktur reinbringen.
Versuch mal in der Datei, die man als erstes öffnet nur reinzuschreiben WAS du tun willst, nicht WIE. Das wie kann man auslagern.
z.B. Zeile 62 - 90 wird zu sowas wie
for my $klassenname (Klassen::namen()) {
Klassenliste::add($klassenname);
}
Ob das dann Radiobuttons werden muss hier nicht stehn, genausowenig wie handgeschriebenes sql.
1 + 1 = 10