#!/usr/bin/perl use strict; use IO::Select; use Socket; use IO::Socket::INET; use Event; use Net::Knuddels; my @CHANNELS = ( 'Singles 11-14', 'Singles 11-14 2', 'Singles 11-14 3', 'Singles 11-14 4', ); my $Knick = "ich bin suess"; my $Kpass = "qwerty"; my $client; sub connect_knuddels { $client->login; Event->io ( fd => $client->fh, poll => 'r', cb => sub { my $e = shift; if (not $client->ready) { $e->w->cancel; } }); } #################################################################################### ########################## MAIN START ############################################## #################################################################################### $client = new Net::Knuddels::Client PeerAddr => "213.61.5.150:2710"; $client->register (UNHANDLED => sub { use Dumpvalue; print "---\n"; Dumpvalue->new (compactDump => 1, veryCompact => 1, quoteHighBit => 1, tick => '"')->dumpValue ([@_]); }); $client->register (login => sub { $client->enter_room ($_, $Knick, $Kpass) for (@CHANNELS); }); $client->register (msg_room => sub { my ($room, $user, $msg) = @_; print "($room) $user: $msg\n"; }); $client->register (msg_priv => sub { my ($room, $src, $dst, $msg) = @_; print "($room) ########### $src an $dst: $msg\n"; }); $client->register (dialog => sub { for my $l (@{$_[0]}) { $l =~ s/\260[^\260]*\260//g; print $l; } }); $client->register (join_room => sub { print "$_[1]->{name} joined $_[0]: ".scalar(keys %{$client->{user_lists}->{lc $_[0]}}). " users\n"; }); $client->register (part_room => sub { print "$_[1]->{name} left $_[0]: ".scalar(keys %{$client->{user_lists}->{lc $_[0]}}). " users\n"; }); $client->register (user_list => sub { my ($room, $list) = @_; print "***** USER JOIN FUER $room *****\n"; print scalar (keys %$list)." users\n"; print "********************************\n"; }); $client->register (room_info => sub { my ($room, $ri) = @_; print "ROOM INFO: $room : $ri->{picture}\n"; }); connect_knuddels; Event::loop;