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
Lesezeichen