#!/opt/bin/perl # Usage: ./chat_client nickname optional-servername # implement a chat client using "traditional message passing" use common::sense; use AnyEvent::MP; my $nick = shift || "anonymous"; configure; $| = 1; my ($client, $server); sub server_connect { my $db_mon; $db_mon = db_mon eg_chat_server => sub { return unless %{ $_[0] }; undef $db_mon; print "\rconnecting...\n"; $client = port { print "\r \r@_\n> " }; mon $client, sub { print "\rdisconnected @_\n"; &server_connect; }; $server = (keys %{ $_[0] })[0]; snd $server, join => $client, $nick; mon $server, $client; }; } server_connect; my $w = AE::io 0, 0, sub { chomp (my $line = ); print "> "; snd $server, privmsg => $nick, $line if $server; }; print "> "; AE::cv->recv;