Schrift
[thread]10735[/thread]

Konsole in Perl-Programm anzeigen?



<< >> 10 Einträge, 1 Seite
pktm
 2007-11-07 13:55
#101946 #101946
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Wie könnte man das machen, dass die Ausgaben eines Programmes, welches gestartet wird, in dem Programm selbst angezeigt werden?
Manchmal habe ich das Problem, dass ich keine Konsole habe (z.B. wenn ich das Programm mit WinPerl starte), aber gerne eventuelle Ausgaben sehen würde, die das Programm macht.
Ideen?
Mein Programm ist in Perl/Tk geschrieben.

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
renee
 2007-11-07 13:58
#101948 #101948
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Soll das "interaktiv" sein? Oder einfach nur die Ausgabe anzeigen?

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl

use strict;
use warnings;
use Tk;

my $mw = tkinit;

my $output = qx{perl programm.pl};
my $text = $mw->Text->pack;
$text->insert( 'end', $output );

MainLoop;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pktm
 2007-11-07 14:03
#101952 #101952
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Es soll nur die Ausgabe anzeigen, also wenn auf einen Button gedrpckt wird und etwas kommt möchte ich das sehen. Allerdings will ich das in dem selben Programm, welches die Ausgaben erzeugt. Geht sowas? Seinen eigenen STDOUT & STDERR verfolgen? Mit Tk?
http://www.intergastro-service.de (mein erstes CMS :) )
renee
 2007-11-07 14:21
#101956 #101956
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Musst Du genauer erläutern...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pktm
 2007-11-07 14:32
#101958 #101958
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Am besten ist wohl anhand eines Beispielprogrammes erläutert:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl

use strict;
use warnings;
use Tk;

my $mw = tkinit();

$mw->Button(
-text => 'Drück mich!',
-command => sub{
print "ausgabe\n";
warn "warnung\n";
},
)->pack();

$mw->MainLoop();


Immer, wenn da der Button gedrückt wird erscheint in der Konsole, meinem STDOUT die Ausgabe. Die Konsole sehe ich aber nicht immer, ich will die Ausgabe aber trotzdem sehen. Also dachte ich mit, wäre es doch vielleicht möglich, in meine grafische Oberfläche noch ein Textfeld einzubauen, in welchem alle Ausgaben (des Programmes, das gerade läuft) angezeigt werden.
http://www.intergastro-service.de (mein erstes CMS :) )
murphy
 2007-11-07 14:43
#101959 #101959
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Es sollte möglich sein, eine Subklasse von IO::Handle zu erstellen, die die Ausgaben in irgendeinen Widget schreibt, davon eine Instanz zu erzeugen und diese mittels select als Standardausgabeziel auszuwählen.
When C++ is your hammer, every problem looks like your thumb.
Spieler
 2007-11-07 16:17
#101971 #101971
User since
2007-09-24
70 Artikel
BenutzerIn
[default_avatar]
Hallo,
falls du so etwas meinst:
aus perldoc Tk::Text :

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
 use Tk;
use strict;

my $mw = MainWindow->new;
my $text = $mw->Text(qw/-width 40 -height 10/)->pack;

tie *STDOUT, ref $text, $text;

print "Hello Text World!\n";

MainLoop;
murphy
 2007-11-07 17:51
#101989 #101989
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
@Spieler: Das ist ja nett -- ich wusste gar nicht, dass diese Möglichkeit beim Tk-Textwidget schon eingebaut ist, ich verwende so selten Tk.
When C++ is your hammer, every problem looks like your thumb.
pktm
 2007-11-07 20:03
#102001 #102001
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Spieler+2007-11-07 15:17:23--
Hallo,
falls du so etwas meinst:
aus perldoc Tk::Text :

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
 use Tk;
use strict;

my $mw = MainWindow->new;
my $text = $mw->Text(qw/-width 40 -height 10/)->pack;

tie *STDOUT, ref $text, $text;

print "Hello Text World!\n";

MainLoop;


Cool! Genau sowas habe ich gesucht!
http://www.intergastro-service.de (mein erstes CMS :) )
ptk
 2007-11-07 21:47
#102003 #102003
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Zu Diagnosezwecken benutze ich gerne CPAN:Tk::Stderr, mit dem ein Text-Widget automatisch gezeugt wird, sobald eine Ausgabe auf STDERR erfolgt.
<< >> 10 Einträge, 1 Seite



View all threads created 2007-11-07 13:55.