時には、機能上あるニックに対して全ユーザ名とホスト名を知る必要があります。フックでこういったことが生じ、ニックがアクションを起こした場合、ニックは$whoに存在し、ユーザホストデータは既に$user及び$hostに存在します。
一方、perl機能&userhostをコールしなければならない場合、そこに次のような3つの引数を与えます。ニックネーム、データが有効な時評価したいもの、そしてニックがIRC上で見つからない場合に評価したいもの。第3引数が省略されていると、sircはデフォルトメッセージである"*?* somenickname not found on IRC"を出力します。
sircの初期のバージョンと異なり、サーバから返答を得る前に短時間で複数のユーザホストリクエストを行うことが可能です。
例: 誰かの国コードを出力する機能
# country code (国コード)
sub printcountry { # ホストの国コード出力
if ($host =˜ /\.([^.]+)$/) { # ホストの最終部分と一致
local($c)=($1); # ローカル var $cにそれを出力
$c="USA" if $c =˜ /^edu$/i; # それが.edu ならば USA
$c="USA (probably)" if $c =˜ /^com$/i || $c =˜ /^org$/i || $c =˜ /^net$/i;
# .org, .com または .net ならば
# おそらく USA 圏
if ($c =˜ /^\d+$/) { # 数値ならば
&tell("*** out of luck, $who has an IP address :p");
# IPであると警告
} else { # その他の場合
&tell("*** $who is in $c");
# 結果を報告
}
}
}
sub cmd_country { # これがコマンドです
&getarg; # $newargに引数を得る
if ($newarg) { # そこにあると
&userhost($newarg, "&printcountry;");
# &printcountry を用いてユーザホストの要請
# 取得のアクションとして
} else { # その他の場合
&tell("*** Whose?"); # 警告
}
}
&addcmd("country"); # コマンドをインストール |