perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 27
Click for quality!




11.02.2012 / 20:48

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


Beitragperlscript mit doppelklick ausführen
Seitenanfang
Hallo profis,
ich brauche eure Hilfe.
ich habe ein perlskript geschrieben unter windows und es läuft sehr gut fehlerfrei.
aber wie könnte ich das Script.pl mit doppelklick wie üblich ausführen? bis jetzt öffnet sich einfach ein schwarzes Fenster und verschwindet sich schnell wieder?

Datum: 06.06.2007-16:08

Beitragre: perlscript mit doppelklick ausführen
Seitenanfang
Hallo!

Das Skript wurde auch ausgeführt, nur schließt Windows die cmd gleich wieder, sobald das Skript fertig ist. Schreibe mal ein


print "Mit Return beenden\n"
<>

ans Ende des Skriptes, dann sollte es gehen.

Grüße, Skrilax

Datum: 06.06.2007-21:04

Beitragre: perlscript mit doppelklick ausführen
Seitenanfang
Entweder mit <STDIN> das Script abschließen oder mit sleep 5 (5 Sekunden warten).

Gruß

Gizmor55

Datum: 08.06.2007-09:50

Beitragre: perlscript mit doppelklick ausführen
Seitenanfang
Danke euch aber ich habe leider nicht gut verstanden was ihr meint.

ich habe sowas am ende meines skriptes geschrieben:

print "Mit Return beenden \n";
<STDIN>

aber ich sehe nicht mein GUI und das selbe Problem von vorher taucht wieder, schwarzes Fenster das sich schnel schließt.
ich habe bestimmt nicht gut verstanden könnt ihr bitte das mehr erklären

Grüße euch

Datum: 11.06.2007-10:52

Beitragre: perlscript mit doppelklick ausführen
Seitenanfang
Vermutlich tritt ein Fehler auf, deshalb siehst du nichts von der GUI und das Ende des Scripts wird wahrscheinlich auch nicht erreicht.

Um herauszufinden was bei der Scriptausfuehrung passiert musst du zu erst eine Eingabeaufforderung oeffnen (Start > Programme > Zubehoer > Eingabeaufforderung).
In dieses schwarze Fenster ziehst du nun die Datei bzw. das Symbol auf dass du den Doppelklick machst, nun sollte in der Eingabeaufforderung der Pfad der Datei stehen. Also in etwa das


Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Dokumente und Einstellungen\dash>"C:\Dokumente und Einstellungen\dash\Desktop
\temp50.pl"


Meine Datei war 'temp50.pl' und lag auf dem Desktop, in der Eingabeaufforderung musst du nun noch Enter druecken damit das Programm ausgefuehrt ist.

Der Vorteil dieser Methode: das schwarze Fenster bleibt geoeffnet und du kannst ablesen welche Fehlermeldungen auftreten.

Datum: 11.06.2007-12:34

Beitragre: perlscript mit doppelklick ausführen
Seitenanfang
Hallo dash,
ich habe gemacht was du gesagt hast und habe sowas als meldung:

can't locate Standlib.pm in @INC contains: C:/Win16App/Perl/lib C:/Win16App/perl/site/lib .)at D:PlatformInstaller\Install_Platform_V1.0.pl line 8
BEGIN failed--compilation aborted at D:\PlatformInstaller\Install_Platform_V1.0.pl line 8

und die Standlib.pm liegt in dem Ordner D:\PlatformInstaller\standlib.pm

Die zeile 8 bei mir sieht so aus:
use Standlib;
und die Bibliothek funktioniert sehr gut.
daran kann es nicht liegen.glaube ich zumindest

Gruß

Datum: 11.06.2007-13:54

Beitragre: perlscript mit doppelklick ausführen
Seitenanfang
Das Modul 'Standlib.pm' kann nicht gefunden werden da sie auszerhalb des Suchpfads (auszerhalb der Pfade in @INC).

Wenn du dir den Inhalt von @INC genauer ansiehst wirst du feststellen dass der Pfad 'D:\PlatformInstaller' nicht mit in der Liste auftaucht.

Die Frage, warum das Script sonst funktioniert und nur wenn du es per Doppelklick aufrufst nicht, ist leicht zu klaeren: In @INC steht als letzter Suchpfad '.', das steht fuer das aktuelle Verzeichnis, das heiszt wenn der perl-Interpreter nach einen Modul sucht, sieht er auch im aktuellen Verzeichnis nach, nur ist, wenn du das Script per Doppelklick aufrufst das aktuelle Verzeichnis ein anderes als das wo das Perlscript und somit auch das Modul liegt.

Fuege die folgenden Zeilen mit an den Anfang des Scripts


use FindBin;
use lib "$FindBin::Bin";

Das Modul 'FindBin' benoetigt man, damit man herausbekommt in welchen Verzeichnis das ausgefuehrte Script liegt, dieser Pfad wird in $FindBin::Bin gespeichert.
Und mit 'use lib' wird der Pfad dem @INC hinzugefuegt, so dass der Perl-Interpreter auch in diesen Pfad sucht.

@INC vorher:
"C:/Win16App/Perl/lib C:/Win16App/perl/site/lib ."

und @INC danach:
"D:/PlatformInstaller C:/Win16App/Perl/lib C:/Win16App/perl/site/lib ."

Datum: 11.06.2007-14:25

Beitragre: perlscript mit doppelklick ausführen
Seitenanfang
ich habe die beiden Zeilen am anfag meines Skriptes zugefügt funktioniert nicht und habe das gleiche Problem.

schwarzes fenster das sich schnell schließt.

FehlerMeldung: Kiene

eingabeauforderung gibt

H:\>

kann es an dem xml-Datei liegen?( vielleicht findet er die datei auch nicht)

Datum: 11.06.2007-15:16

Beitragre: perlscript mit doppelklick ausführen
Seitenanfang
Kann ich dir nicht mit 100%-iger Sicherheit sagen, wenn ich mich recht erinnere verwendest du XML::Simple und wenn du mit XMLin versuchst eine Datei zu oeffnen, diese aber nicht existiert dann Beendet sich das Programm mit einer Fehler meldung 'File does not exist: ...'

Da nun keine Fehlermeldung auftritt laesst sich natuerlich schwer sagen woran es liegt.

Wie rufst du denn das Programm sonst auf? Und funktioniert es so wie es soll?

Datum: 11.06.2007-15:28

Beitragre: perlscript mit doppelklick ausführen
Seitenanfang
die Standlib verwendet xml DOM.
ich rufe dass Program auf in dem ich die perl.exe ausführe und auf execute drücke.
und es funktioniert wunderbar.
ich danke dir ich mache es einfach denn mit einer batch-datei durch den Befehl:

perl.exe Install_Platform_V1.0.pl config.xml
pause

jetzt habe ich eine progressbar im Hauptfenster zugefügt und solange eine funktion die bei mir install() heisst sollte diese Progressbar sich hin und her bewegen ich habe es mit sowas probiert aber irgendwas ist falsch.
##################################
my $mybar = $f_plat ->ProgressBar(
-relief => 'raised',
-borderwidth => 5,
-troughcolor=>'#BFEFFF',
-width => 30,
-colors=>[ 0, '#104E8B' ],
-length=>120,
-from =>'0',
-to => '50',
-variable => \install(),
);
$mybar -> pack(-side => 'top', -padx => '0.5c');
######################
kannst mir nochmal helfen und sorry für die Störungen.

Gruß

Datum: 11.06.2007-16:05

Beitragre: perlscript mit doppelklick ausführen
Seitenanfang

perl.exe Install_Platform_V1.0.pl config.xml

Dann ist scheinbar doch die fehlenden XML-Datei schuldig, denn wenn du das Script per Doppelklick aufrufst wird nicht automatisch 'config.xml' aus Parameter uebergeben.

Schlecht ist aber auch dass dein Script nicht ensprechend mit einer Fehlermeldung reagiert wenn dieses Argument fehlt.

Wenn es notwendig ist die XML-Datei als Argument an das Script zu uebergeben, dann wird es nur ueber eine Batch-Datei gehen bzw. ein Link auf eine Batch-Datei.

-"-

Auf den ersten Blick wuerde ich sagen es liegt an 'variable => \install()', dieser Parameter erwartet eine Referenz auf eine Skalarvariable.
Es wuerde funktionieren wenn 'install' einen Skalarwert zurueckliefert, der wuerde dann referenziert und als Variable verwendet werden.
Auf diese Variable laesst sich aber schlecht zugreifen.

Kurz und knapp:
Entweder du verwendest eine globale Variable, die du waehrend des Prozess entsprechend veraenderst


my $progbar_status = 0;

my $mybar = $f_plat ->ProgressBar(
-relief => 'raised',
-borderwidth => 5,
-troughcolor=>'#BFEFFF',
-width => 30,
-colors=>[ 0, '#104E8B' ],
-length=>120,
-from =>'0',
-to => '50',
-variable => \$progbar_status,
);

sub in_your_process {
$progbar_status = 10;
}

oder du laesst die globale Variable weg und veraenderst den Status ueber die 'value'-Funktion.


my $mybar = $f_plat ->ProgressBar(
-relief => 'raised',
-borderwidth => 5,
-troughcolor=>'#BFEFFF',
-width => 30,
-colors=>[ 0, '#104E8B' ],
-length=>120,
-from =>'0',
-to => '50',
);

sub in_your_process {
$mybar->value(10);
}


Das Setzten des Status ueber die Variable bzw. ueber die Funktion 'value' muss nach jeden Teilschritt von Hand ausgefuehrt werden. Das kann Tk::ProgressBar nicht fuer dich uebernehmen.

Datum: 11.06.2007-16:41

-






-
-