KSirc ハンドブック
前のページ | 第 5章Sirc クライアントプログラミング | 次のページ

# 5.4. ユーザホストリクエスト

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

前のページ | Home | 次のページ
SET 変数 | Up | タイマー