elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
08 Septiembre 2008, 19:49  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Scripting
| | | |-+  Perl/Tk y salida Estandar
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Perl/Tk y salida Estandar  (Leído 189 veces)
^TiFa^

Desconectado Desconectado

Mensajes: 667


Need a Love Loan? Borrow some from me :)


Ver Perfil
Perl/Tk y salida Estandar
« en: 01 Junio 2008, 00:54 »

Hola usando de ejemplo el siguiente codigo :

Código:
#!/usr/bin/perl
use strict;
use Tk;
use Tk::NoteBook;

my $ventana = MainWindow->new();
$ventana->minsize(qw(700 400));
$ventana->maxsize(qw(700 400));
$ventana->configure(-title => "Proyecto");

my $nota = $ventana->NoteBook(-background => 'white')->pack(-fill => 'both', -expand => 1);
my $pestana = $nota->add('Uno', -label => "Uno")->pack();
my $pestana1 = $nota->add('Dos', -label => "Dos")->pack();
my $pestana2 = $nota->add('Tres', -label => "Tres")->pack();

my $frama = $pestana->Frame->pack();
$frama->Label(-text => " ")->pack();
my $texto = $frama->Scrolled('Text', -width => 80, -height => 20, -background => 'white')->pack();
$frama->Button(-text => "Ver", -borderwidth => 4, -relief => 'raised', -width => 20, -command => \&proceso)->pack(-side => 'left');
$frama->Button(-text => "Limpiar", -borderwidth => 4, -relief => 'raised', -width => 20, -command => \&proceso1)->pack(-side => 'right');

MainLoop();

sub proceso {
my $a = system("ps aux > archivo.txt");
open(AA,"<archivo.txt");
my @b = <AA>;
$texto->insert("end", "@b");
close(AA);
};

sub proceso1 {
system("rm archivo.txt");
$texto->delete('0.0', "end");
};

Mi objetivo es lograr (cosa que aun no se como) imprimir la salida estandar STDOUT de algun comando hacia el widget Text (texto), pero cuando intento digase con system("ps aux") el me imprime obviamente en la terminal que es el verdadero flujo de salida estandar STDOUT, y en el widget me imprime el valor que dicho comando devuelve, ya sea cero o uno... yo no quiero guardar en un texto primero la impresion de cierto comando y luego abrir ese texto he imprimirlo en mi widget, yo quiero saber si hay alguna via de dirigir la salida estandar a un widget texto.
En línea

http://chixmes.blogspot.com/

Si quieres saber el valor del dinero, trata de conseguirlo prestado. 

El que se enorgullece de sus conocimientos es como si estuviera ciego en plena luz.
- Benjamin Franklin.

^TiFa^

Desconectado Desconectado

Mensajes: 667


Need a Love Loan? Borrow some from me :)


Ver Perfil
Re: Perl/Tk y salida Estandar
« Respuesta #1 en: 06 Junio 2008, 22:45 »

Nadie sabe como redirigir la salida estandar STDOUT a un widget de texto   :-\

Aunque sea en otro lenguaje que no sea Perl/Tk, pueden decirme si tienen una idea ya sea en C++/QT o C/GTK o el que sea, pero que sea en Linux o Unix claro...

Realmente tengo interes de saber si es posible  :huh:
En línea

http://chixmes.blogspot.com/

Si quieres saber el valor del dinero, trata de conseguirlo prestado. 

El que se enorgullece de sus conocimientos es como si estuviera ciego en plena luz.
- Benjamin Franklin.

sirdarckcat
sdc
CoAdmin
*****
Desconectado Desconectado

Mensajes: 4.523


HAND


Ver Perfil WWW
Re: Perl/Tk y salida Estandar
« Respuesta #2 en: 07 Junio 2008, 00:11 »


        set pipe [open |cat.exe r+]
        fileevent $pipe readable .stderr.processing.

        set process [open "|process.exe 2>@$pipe" r+]
        fileevent $process readable .stdout.processing.

http://wiki.tcl.tk/880

Perl:TK - standard output to text widget
http://www.perlmonks.org/?node_id=332324

Saludos!!
En línea

^TiFa^

Desconectado Desconectado

Mensajes: 667


Need a Love Loan? Borrow some from me :)


Ver Perfil
Re: Perl/Tk y salida Estandar
« Respuesta #3 en: 07 Junio 2008, 17:47 »

Gracias  :D

Esto era precisamente lo que andaba buscando :

my $ventana = MainWindow->new();
$ventana->minsize(qw(300 300));
my $texto = $ventana->Text(-width => 20, -height => 10, -background => 'white')->pack();

my $comando = `ps aux`;
$texto->insert("end", $comando);

Supongo que con la funcion system no se puede :) ya que system le dice que ejecute algo del sistema en la salida estandar del mismo sistema, no del interprete perl.

Gracias.
En línea

http://chixmes.blogspot.com/

Si quieres saber el valor del dinero, trata de conseguirlo prestado. 

El que se enorgullece de sus conocimientos es como si estuviera ciego en plena luz.
- Benjamin Franklin.

Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC