我正在尝试测试用户是否在 FreeNode 上注册。nick_info() 似乎没有返回有关此信息,所以我想使用 $irc->yield(whois => $nick); 然后获取 irc_whois 事件的回复。问题是我想等到这个事件被触发,所以我创建了一个全局变量 $whois_result 并写了一个这样的子:
sub whois {
my $nick = $_[0];
$whois_result = 0;
$irc->yield(whois => $nick);
while($whois_result == 0) { }
return $whois_result;
}
irc_whois 处理程序看起来像:
sub on_whois {
$whois_result = $_[ARG0];
print "DEBUG: irc_whois fired.\n";
}
不幸的是,循环运行时事件无法触发,因此挂起。我确信有更好的方法可以做到这一点,但我对这种编程还不够熟悉。任何帮助将不胜感激。