ユーザーが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";
}
残念ながら、ループの実行中はイベントを発生させることができないため、これはハングします。これを行うためのより良い方法があると確信していますが、私はこの種のプログラミングについて十分に理解していません。どんな助けでも大歓迎です。