L'environnement de bureau K

5.4. Demandes de l'hôte utilisateur

Quelquefois, dans une fonction vous avez besoin de savoir le nom complet de l'utilisateur et de l'hôte utilisateur pour chaque peudonyme. Si cela se produit dans un point d'insertion, et que le point d'insertion est le seul qui étatit actif, le pseudonyme est alors dans $who et les données de l'hôte utilisateur sont déjà dans $user et $host.

Cependant, vous devez appeler la fonction perl &userhost donnant ici trois arguments : le pseudonyme, ce que vous voulez voir évalué lorsque les données sont disponibles si le peudinyme n'est pas trouvé sur IRC; si le troisième argument est omis, sirc éditera le message par défaut "*?* somenickname not found on IRC" (pas de psedonyme trouvé sur IRC).

Au contraire des versions antérieures de sirc, il est possible de faire plus d'une demande d'hôte urilisateur dans un délai court avant d'obtenir les réponses du serveur.

Exemple : une fonction qui édite le code du pays d'un interlocuteur

p>
 # country code (code du pays)
 
 sub printcountry {		# prints $host's country code (édite le code du pays de l'hôte)
 
   if ($host =˜ /\.([^.]+)$/) {  # match the last part of the host (correspond à la dernière partie de l'hôte)
     local($c)=($1); 		# put it in local var $c  (placé dans une variable locale $c)
     $c="USA" if $c =˜ /^edu$/i;	# if it's a .edu, say it's USA (si c'est un .edu, il s'agit des USA)
     $c="USA (probably)" if $c =˜ /^com$/i || $c =˜ /^org$/i || $c =˜ /^net$/i;
 				# if it's a .org, .com or .net, it's (si c'est un .org; .com ou .net, il s'agit
 				# probably in the USA too             probablement des USA aussi)
     if ($c =˜ /^\d+$/) {	# if it's a number (si c'est un nombre)
       &tell("*** out of luck, $who has an IP address :p"); (pas de chance, $who a une adresse IP :p")
 				# complain, it's an IP (réclamation si c'est une adresse IP)
     } else {			# otherwise  (autrement)
       &tell("*** $who is in $c");
 				# announce the result  (annonce le résultat)
     }
   }
 }
 
 sub cmd_country {		# this is the command (voici la commande)
 
   &getarg;			# get the argument in $newarg (obtient l'argument dans $nearg)
   if ($newarg) {		# if it's there  (s'il y est)
     &userhost($newarg, "&printcountry;");
 				# request a userhost with &printcountry as (demande à un hôte
                                                                         utlisateur son code de pays)
 				# action to take (action à faire)
 
   } else {			# otherwise (autrement)
     &tell("*** Whose?");	# complain (réclamation)
   }
 }
 
 &addcmd("country");		# install the command  (installe la commande)