#!/usr/bin/perl -w
no
warnings
qw(uninitialized)
;
$Data::Dumper::Sortkeys
= 1;
my
$dc
= Net::DirectConnect->new(
'host'
=>
$ARGV
[0],
'M'
=>
'P'
,
'sharesize'
=> 10_000_000_000,
'auto_connect'
=> 0,
'auto_say'
=> 1,
);
print
'available commands:'
, (
join
', '
,
sort
keys
%{
$dc
->{
'cmd'
} } ),
"\n"
;
print
'some available handlers:'
, (
join
', '
,
sort
keys
%{
$dc
->{
'parse'
} } ),
"\n"
;
$dc
->{
'handler'
}{
'MyINFO'
} =
sub
{
(
$_
) =
$_
[1] =~ /\S+\s+(\S+)\s+(.*)/;
print
"my cool info parser gets info about $1 [$2]\n"
;
};
$dc
->{
'handler'
}{
'chatline'
} =
sub
{
my
$dc
=
shift
;
my
(
$nick
,
$text
) =
$_
[0] =~ /^<([^>]+)> (.+)$/;
print
"My chatline handler [$nick,$text]\n"
;
if
(
$text
=~ /^\s*!moo/i ) {
$dc
->cmd(
'chatline'
,
'meow!'
);
$dc
->To(
$nick
,
'woof!'
);
}
};
$dc
->wait_connect();
$dc
->work(10);
$dc
->chatline(
'hello world'
);
{
local
$dc
->{
'sendbuf'
} = 1;
$dc
->sendcmd(
'GetINFO'
,
$_
,
$dc
->{
'Nick'
} )
for
grep
{
$dc
->{
'NickList'
}{
$_
}{
'online'
} and !
$dc
->{
'NickList'
}{
$_
}{
'info'
} }
keys
%{
$dc
->{
'NickList'
} };
$dc
->sendcmd();
}
$dc
->sendcmd(
'GetINFO'
);
$dc
->search(
'3P7MBNO5COD4TLTVXLJB53ZJBVIL2QRHIGZ2N5A'
);
$dc
->search(
'xxx'
);
$dc
->get(
$_
,
'files.xml.bz2'
,
$_
.
'.xml.bz2'
),
$dc
->work()
for
grep
$_
ne
$dc
->{
'Nick'
},
keys
%{
$dc
->{
'NickList'
} };
$dc
->work(10);
$dc
->wait_finish();
$dc
->disconnect();