Anzeige:
Ergebnis 1 bis 2 von 2

Thema: perl, irssi und screen

  1. #1
    Registrierter Benutzer
    Registriert seit
    11.06.2003
    Beiträge
    37

    perl, irssi und screen

    hi,
    also ich habe folgendes problem: ich wuerde gerne einen screen in einem irssi fenster laufen lassen.
    wenn ich das mit /exec screen -x meinesession mache bekomm ich als fehler:
    Must be connected to a terminal.

    So aber ich wuerde die ausgabe des programs, dass in screen ist gerne über perl umleiten, damit ich die ausgabe ein wenig formatieren kann.

    Wie stelle ich das also am besten an?
    thx schonmal

  2. #2
    Registrierter Benutzer
    Registriert seit
    11.06.2003
    Beiträge
    37
    hi bin jetzt etwas weiter. hab das hier fuers forum ein wenig gekuertzt. also wenn ich jetzt /screenlog in irssi aufrufe, reagiert irssi nicht mehr. also funktioniert das mit tail nicht so wirklich, also was koennt ich stattdessen benutzen ? thx
    Code:
    use Irssi;
    use Irssi::Irc;
    use vars qw($VERSION %IRSSI);
    use strict;
    use File::Tail;
    
    sub screen {
            my $scrnwin = Irssi::window_find_item('screen');
            unless ( $scrnwin ) {
                            $scrnwin = Irssi::Windowitem::window_create('', -1);
                            $scrnwin->set_name('screen');
            }
            system("screen -x screensess -X logfile /tmp/screenlog");
            system("screen -x screensess -X logfile flush 1");
            system("screen -x screensess -X log on");
    
             Irssi::timeout_add('1000','log', $scrnwin);
            }
    }
    
    sub log {
            my ($file, $line);
            my $scrnwin = $_[0];
            $file=File::Tail->new("/tmp/screenlog");
            while (defined($line=$file->read)) {
                    $line =~ s/\^/\%\%/g;
                    $scrnwin->command("echo  $line");
            }
    }
    
    
    
    Irssi::command_bind('screenlog', 'screen');
    //edit: hmm also so wie ich das sub log gemacht hab kanns ja nicht gehen, dann wuerde ja immer ein neues tailf aufgerufen. also wie mach ich das dann?
    und das tail funzt auch irgendwie garnicht

    das mit tail hab ich jetzt so hinbekommen:
    my $line;
    open (FILE, "tail -f /tmp/screenlog |");
    while ($line = <FILE> ) {
    print $line;
    }
    close FILE;

    aber das while blockiert irssi. egal wo ichs hinschreibe
    Geändert von senfmensch (10-01-2005 um 23:09 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •