Ich würde gerne in einem Programm von mir ein zweites Programm als Package einbinden. Dabei bin ich auf ein kleines Problem gestoßen bei dem ich nicht weiter komme.
Ich habe ein Programm wie z.b. das hier:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use strict;
use warnings;
use Tk;
my $mw = MainWindow->new();
my $Variable;
{verschiedene Widgets}
MainLoop;
sub x {
...
}
sub y {
...
}
In dieses Programm würde ich jetzt gerne mit "use Programm2;" das zweite Programm einbinden. Das zweite Programm ist ähnlich aufgebaut:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use strict;
use warnings;
use Tk;
my $mw = MainWindow->new();
my $Variable;
{verschiedene Widgets}
MainLoop;
sub x {
...
}
sub y {
...
}
Wenn ich jetzt also im ersten Programm "use Programm2;" hinzufüge und im zweiten "package Programm2;", dann startet er beim öffnen des Hauptprogramms zuerst das Programm2, sprich er erzeugt das MainWindow.
Ich habe dann das erzeugen des MainWindow bis zum MainLoop in ein sub mit dem namen Start gepackt. Dann startet es nicht mehr und ich kann mit Programm2->Start das ganze auslösen.
Und hier beginnen auch meine Probleme. Da die subs in Programm2 auf Widgets und Variablen in Start zugreifen müssen, bekomme ich natürlich die Fehlermeldung das diese Widgets/Variablen nicht deklariert sind.
Ich habe versucht in den Start sub die anderen subs aus Programm2 mit einzubinden, was aber nicht funktioniert hat.
Bleibt mir keine andere Möglichkeit wie alle Subs in Programm2 umzuschreiben, so dass diesen die Widgets und Variablen übergeben werden? Oder gibt es vielleicht eine einfachere Möglichkeit?
Last edited: 2011-01-14 12:04:13 +0100 (CET)