Schrift
[thread]4815[/thread]

Perl/Tk - wie rufe ich ein PERL Programm?: Aufruf PERL-prog. aus Perl/TK



<< >> 4 Einträge, 1 Seite
Gerry
 2004-08-18 14:38
#42462 #42462
User since
2004-08-18
26 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

als Anfänger im Bereich Perl bzw. Perl/Tk renne ich natürlich laufend in "Loops", und so ist es auch mit diesem Problem (also bitte Nachsicht üben).

Unten steht ein kleines Perl/Tk-Progrämmchen, das lediglich einen Zweck hat, nämlich ein ZWEITES in PERL kodiertes Programm zu starten (z.B. TEST.PL). Kann mir jemand sagen, wie ich beim Click auf den Button "Ausführen" ein x-beliebiges PERL-Programm (z.B. C:\TEST\TEST.PL) ausführen kann? Vielleicht kann jemand unter "sub Programm_Ausfuehren" den Code reinschreiben. Auch für einen Hinweis darauf, wo ich die Doku für diese Funktion steht, wäre ich dankbar.

Schon im Voraus besten Dank.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/local/bin/perl -w
use Tk 8.0;
use strict;

my $mw = MainWindow->new;
$mw->geometry('350x175');

my $menubar = $mw->Menu;
$mw->configure(-menu => $menubar);

my $file = $menubar->cascade(-label => '~Datei');

$file->command(-label => 'Ausführen', -command => \&leeres_info_fenster);
$file->command(-label => 'E~xit', -command => \&ExitApplication);

MainLoop;
# *****************************************************************************
# ** Sub LEERES INFO FENSTER **************************************************
# *****************************************************************************
sub leeres_info_fenster {
my $popup = $mw->Dialog(
-popover => $mw,
-title => 'Leeres INFO Fenster',
-bitmap => 'Tk',
-default_button => 'OK',
-buttons => ['OK'],
-text => "Diese Funktion ist noch\n".
"nicht aktiviert. \n",
);
$popup->resizable('no', 'no');
$popup->Show();
}


# *****************************************************************************
# ** Sub Programm_Ausfuehren **************************************************
# *****************************************************************************
sub Programm_Ausfuehren {
# Hier sollte ein Unterprogram (z.B. C:\TEST\TEST.PL), ausgeführt werden
# sobald ich vorher den Button "Ausführen" gedrückt habe. Wie muss diese
# Routine hier kodiert werden?
}

# *****************************************************************************
# ** Sub ExitApplication ******************************************************
# *****************************************************************************
sub ExitApplication {
my $dialog = $mw->Dialog(-text => 'Anwendung wirklich beenden?',
-bitmap => 'question',
-title => 'Anwendung verlassen?',
-default_button => 'Yes',
-buttons => [qw/Yes No/],
);
my $answer = $dialog->Show();
if ($answer =~ /y/i){
exit;
}
else {
}
}
betterworld
 2004-08-18 14:51
#42463 #42463
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
OK, es gibt da im Grunde zwei Moeglichkeiten:
1) Du schreibst
Code: (dl )
do "test.pl"

Da kann dann das eine Programm auf die Funktionen (und evtl globalen Variablen) des anderen zugreifen und umgekehrt. Das kann gute und schlechte Seiten haben.

Wenn die Programme komplett unabhaengig voneinander sind, bietet sich folgendes an:
2)
Code: (dl )
system("perl", "test.pl");
ptk
 2004-08-18 15:24
#42464 #42464
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=betterworld,18.08.2004, 12:51]Wenn die Programme komplett unabhaengig voneinander sind, bietet sich folgendes an:
2)
Code: (dl )
system("perl", "test.pl");
[/quote]
Ich benutze stattdessen lieber:
Code: (dl )
system($^X, "test.pl");

Damit wird sicher gestellt, dass das gleiche Perl-Binary sowohl fuer Hauptprogramm als auch fuer test.pl verwendet wird. Das ist sinnvoll, wenn nicht Standard-Pfade fuer perl verwendet werden (z.B. /usr/bin/perl5, oder versionsspezifische Perls, z.B. nutze ich manchmal Pfade wie /usr/perl5.8.5/bin/perl).
Gerry
 2004-08-18 15:31
#42465 #42465
User since
2004-08-18
26 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

die Alternative 2 (beide Lösungsansätze) haben geholfen. Vielen Dank für die Info ... ich denke es lohnt sich für mich hier des öfteren vorbeizuschauen ...;)
<< >> 4 Einträge, 1 Seite



View all threads created 2004-08-18 14:38.