#!/opt/bin/perl # Usage: ./chat_client nickname optional-servername # implement a chat client using "traditional message passing" use common::sense; use AnyEvent::MP; use AnyEvent::MP::Global; my $nick = shift; configure; $| = 1; my ($client, $server); sub server_connect { my $servernodes = AnyEvent::MP::Global::find "eg_chat_server" or return after 1, \&server_connect; print "\rconnecting...\n"; $client = port { print "\r \r@_\n> " }; mon $client, sub { print "\rdisconnected @_\n"; &server_connect; }; $server = $servernodes->[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;