2 # This is a simple script that connects stdin/stdout with a client
3 # connection to an irc server. the command line arguments are:
5 # $ ./debug_console <nick> <server> <port>
10 use AnyEvent::IRC::Client;
11 use AnyEvent::IRC::Util qw/mk_msg parse_irc_msg encode_ctcp/;
14 my ($nick, $server, $port) = @ARGV;
17 $server ||= 'irc.freenode.net';
20 my $c = AnyEvent->condvar;
21 my $stdout = AnyEvent::Handle->new (fh => \*STDOUT);
22 my $con = new AnyEvent::IRC::Client;
29 warn "Couldn't connect: $err\n";
32 $stdout->push_write ("Connected!\n");
35 $con->register ($nick, $nick, $nick);
41 . mk_msg ($msg->{prefix}, $msg->{command}, @{$msg->{params}})
48 "> " . mk_msg (undef, @msg) . "\n"
55 $stdin = AnyEvent::Handle->new (
58 warn "EOF on STDIN, disconnecting...\n";
59 $con->disconnect ("Console EOF");
62 warn "Error on STDIN: $!\n";
65 $stdin->push_read (line => sub {
66 my ($stdin, $line) = @_;
71 warn "eval error: $@\n";
73 $Data::Dumper::Terse = 1;
74 $stdout->push_write ("result: " . Data::Dumper::Dumper ($r));
77 my $msg = parse_irc_msg ($line);
78 $con->send_msg ($msg->{command}, @{$msg->{params}});
85 warn "disconnect: $_[1]!\n";
90 $con->ctcp_auto_reply ('VERSION', ['VERSION', 'DebugConsole:0.1:Perl']);
92 $con->connect ($server, $port || 6667);