時には、機能上あるニックに対して全ユーザ名とホスト名を知る必要があります。フックでこういったことが生じ、ニックがアクションを起こした場合、ニックは$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"); # コマンドをインストール |