Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5710[/thread]

Wertübergabe zwischen 2 Perl Programmen

Leser: 2


<< |< 1 2 3 4 >| >> 40 Einträge, 4 Seiten
Robby
 2003-09-11 10:04
#50402 #50402
User since
2003-08-11
409 Artikel
BenutzerIn
[default_avatar]
Hallo und Guten Morgen!

Ich hab 2 Perl Programme.
Das erste läuft im Loop und soll bei einem bestimmtne Ereigniss einen Wert an das andere Programm übergeben aber trotzdem weiterlaufen. (Als einfaches Beispiel könnt ihr ein Programm nehmen, dass jede Sekunde eine Variable eins hochzählt und immer nach 10 Zahlen diese Zahl an mein Hauptprogramm übergibt)

Das 2. Programm soll ein TK Programm werden, wo die zurückkommende Info abgegriffen und dargestellt wird...

Ich hoffe ihr wisst was ich meine ??? :D

Ich hab es mal ins Perl Forum und nicht ins TK-Forum gestellt weil die Übergabe wohl nix mit TK zu tun hat ;)

Jemand eine Idee wie ich das ohne fork oder so machen kann?

Gruß
Robby
Kaum macht man es richtig - schon funktioniert es!
Dubu
 2003-09-11 10:20
#50403 #50403
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Pipes, Sockets, RPC, ...

perlipc
Robby
 2003-09-11 10:39
#50404 #50404
User since
2003-08-11
409 Artikel
BenutzerIn
[default_avatar]
ich steh heute morgen auf Schlauch....
kannste Du mir das mal an einem kleinen Beispiel erklären? :D

Hier ist mein TK-Programm
Code: (dl )
1
2
3
4
5
6
7
8
#!/usr/local/bin/perl -w

use strict;
use Tk;

$mw = MainWindow->new;
my $test_button = $mw->Button(-text => "print test",-command=> sub { print "test\n"; } )->pack();
MainLoop;



und hier das loopende Programm
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/local/bin/perl -w

use strict;

my $counter = 0;

while ( $counter < 100 )
{
$counter++;
sleep(10);
print $counter;
}


wie kann ich anstatt print $counter den Wert an mein TK Programm übergeben???
Kaum macht man es richtig - schon funktioniert es!
Dubu
 2003-09-11 11:08
#50405 #50405
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Wofuer denn ein Beispiel? Noch steht doch nicht mal fest, mit welchem Mechanismus du die Daten uebertragen willst.

- Wird eines der beiden Programme vom anderen gestartet? Waere das zumindest moeglich? (Dann kann man eine einfache Pipe nehmen.)
- Auf welcher Plattform laufen die Programme? Unix/Linux? (Dann kann man FIFOs nehmen.)
- Laufen beide auf dem gleichen Rechner? (Sonst gehen nur Sockets.)
- Wie zuverlaessig muss die Uebertragung sein? (Darf es ein UDP-Socket sein?)
- Mit welcher Geschwindigkeit tauchen die Daten am ausgebenden Programm auf? Ich nehme mal an, die 10 Sekunden sind nur ein Beispiel. Wie synchron muss die Anzeige sein? (Muss das lesende Programm interruptgesteuert arbeiten oder reicht es zu pollen?)
Robby
 2003-09-11 11:30
#50406 #50406
User since
2003-08-11
409 Artikel
BenutzerIn
[default_avatar]
[quote=Dubu,11.09.2003, 09:08]Wofuer denn ein Beispiel? Noch steht doch nicht mal fest, mit welchem Mechanismus du die Daten uebertragen willst.

- Wird eines der beiden Programme vom anderen gestartet? Waere das zumindest moeglich? (Dann kann man eine einfache Pipe nehmen.)
- Auf welcher Plattform laufen die Programme? Unix/Linux? (Dann kann man FIFOs nehmen.)
- Laufen beide auf dem gleichen Rechner? (Sonst gehen nur Sockets.)
- Wie zuverlaessig muss die Uebertragung sein? (Darf es ein UDP-Socket sein?)
- Mit welcher Geschwindigkeit tauchen die Daten am ausgebenden Programm auf? Ich nehme mal an, die 10 Sekunden sind nur ein Beispiel. Wie synchron muss die Anzeige sein? (Muss das lesende Programm interruptgesteuert arbeiten oder reicht es zu pollen?)[/quote]
Ok, das mit dem Beispiel war nicht ganz richtig...ich wollte einen kleinen Tipp wie ich weiter vorgehen soll :D

- Ja ich starte das Loopende Programm vom Hauptprogramm aus.
- Plattform ist Windows
- Laufen beide auf dem gleichen Rechner
- Zuverlässigkeit? Ich möchte einfach eine Nachricht bekommen wenn neue mail in meinem Outlook eintrifft....also keine "wichtigen" Daten :)
- Das lesende Programm soll direkt die Daten erhalten...die 10 Sekunden waren nur ein Beispiel um Daten mit einem gewisse Abstand zu erhalten....später soll das Programm nur neue mails abfangen und sofort an mein lesendes Programm schicken...
Kaum macht man es richtig - schon funktioniert es!
pq
 2003-09-11 12:56
#50407 #50407
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
also am einfachsten wäre ja
system('programm2.pl', $counter);
was ist das problem?
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Crian
 2003-09-11 13:00
#50408 #50408
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Dass das Programm im laufenden Betrieb andauernd neue Daten erhalten soll und nicht einmal mit einem Parameter aufgerufen werden soll.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Robby
 2003-09-11 13:03
#50409 #50409
User since
2003-08-11
409 Artikel
BenutzerIn
[default_avatar]
[quote=Crian,11.09.2003, 11:00]Dass das Programm im laufenden Betrieb andauernd neue Daten erhalten soll und nicht einmal mit einem Parameter aufgerufen werden soll.[/quote]
genau, es soll ein Programm gestartet werden das endlos läuft und in unregelmäßigen Abständen Werte zurückgibt (in meinem Fall: Mail-Absender, Mail-Betreff)
Kaum macht man es richtig - schon funktioniert es!
pq
 2003-09-11 13:03
#50410 #50410
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Crian,11.09.2003, 11:00]Dass das Programm im laufenden Betrieb andauernd neue Daten erhalten soll und nicht einmal mit einem Parameter aufgerufen werden soll.[/quote]
achso. das stand so nicht in der originalfrage, deswegen wollte ich lieber
nochmal nachfragen. tja dann - perlipc
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Robby
 2003-09-11 13:12
#50411 #50411
User since
2003-08-11
409 Artikel
BenutzerIn
[default_avatar]
[quote=pq,11.09.2003, 11:03]achso. das stand so nicht in der originalfrage, deswegen wollte ich lieber
nochmal nachfragen. tja dann - perlipc[/quote]
könntest Du mir das an dem oberen Beispiel evtl. verdeutlichen oder sagen was ich wo machen muss??

Ich versteh (noch) nicht ganz wie ich das 2 Perl-Skript aufrufe und dort Rückgabewerte erzeuge und im aufrufenden Programm wieder abfange *verwirr* :D
Kaum macht man es richtig - schon funktioniert es!
<< |< 1 2 3 4 >| >> 40 Einträge, 4 Seiten



View all threads created 2003-09-11 10:04.