PDA

Afficher la version complète : [Réglé] Langage TCL



jacqueline
09/03/2005, 15h33
Voilà, j'essaye de comprendre le fonctionnement de ce programme

/usr/lib/tcllib1.6.1/irc/irc.tcl

J'ai bien épluché les docs TCL, peu nombreuses, mais j'ai trouvé des choses assez contradictoires en fonction de la date des documents.... comme quoi TCL ne manipulerait que des chaînes de caractères.

J'ai tout de même trouvé que proc était une déclaration de procédure... et que les variables à l'intérieur d'une procédure sont "locales" ( là j'ai un sérieux doute, bien qu'on ne les retrouve que dans cette procédure )


Si vous avez un bon tuto sur le TCL, je suis preneuse ! (langage interprété, très lent d'après ses auteurs, http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wink.gif mais simple et efficace.. http://www.alionet.org/style_emoticons/<#EMO_DIR#>/biggrin.gif

<div class='quotetop'>Citation </div>
proc cmd-user { username hostname servername {userinfo ""} } {
if { $userinfo == "" } {
ircsend "USER $username $hostname server :$servername"
} else {
ircsend "USER $username $hostname $servername :$userinfo"
}
}[/b]

J'ai cru comprendre que cmd-user est le nom de la procédure ?

Qu'est ce la ligne suivante ( une déclaration de variables ?) et quelle différence avec la suivante ?

{ username hostname servername {userinfo ""} }

$username $hostname server :$servername

et dans ce cas pourquoi tester userinfo après ? ( c'est la seule procédure où on la trouve )


Que signifient ces accolades supplémentaires {userinfo ""} ? une variable externe ?

-----------------------------------------------------------------------------------------------------------------

Ircsend est appellé par diverses procédures : avec différents paramètres derrière l'appel

<div class='quotetop'>Citation </div>
# ircsend --
# send text to the IRC server

proc ircsend { msg } {
variable sock
variable dispatch
variable logger
if { $sock == "" } { return }
${logger}::debug "ircsend: '$msg'"
if { [catch {puts $sock $msg} err] } {
catch { close $sock }
set sock {}
if { [info exists dispatch(EOF)] } {
eval $dispatch(EOF)
}
${logger}::error "Error in ircsend: $err"
}
}[/b]

Là dedans je ne vois rien qui ressemblerait à l'envoi d'une chaine de caratères au serveur...
à par set sock peut être.. et que sock soit traité par un autre prog..

Enfin il me semble au vu de ce programme qu' ircsend ne fait que passer des noms de variables ( variables de Linux comme hostname , etc..qu'on retrouve un peu partout) à un autre prog et là elle prendront les bonnes valeurs avant de partir vers le serveur.

Si c'est le cas, je n'étais pas sur la bonne piste..mais je m'interroge toujours sur cette différence selon le résultat du test de "userinfo" dans proc cmd-r, que je ne pige pas du tout.


Merci de vos réponse.

siko
10/03/2005, 08h05
J'ai trouvé un lien pour le Tcl, si il peut aider.

http://www.uppp.free.fr/Tcltk.htm

jacqueline
10/03/2005, 14h57
Merci Siko.

C'est un peu maigre, mais j'ai déjà une première réponse.

<div class='quotetop'>Citation </div>
On pourra remarquer que le signe $ ne doit pas être utilisé lors de l'assignation d'une variable. On utilise le $ uniquement si l'on veut obtenir la valeur d'une variable.[/b]

J'aimerais bien trouver un moyen d 'imprimer dans une fenêtre, les valeurs de certaines variables, lorsqu'on passe ici ou là.. (un debg en fait ), et puis aussi un bip pour savoir si je passe bien là lorsque je me connecte à un chat (plus simple et plus sur que la fenêtre).

---------------------------------------------------------------------------------------------------------------

Bon j'ai trouvé comment affecter une valeur "particulière" ( toto, titi, tata,tutu ) à ces variables d'identification qui partent sur le serveur IRC : il me suffit de les remplacer par d'autres (pour ne pas mettre le bazar dans le reste de linux ) et de donner une valeur à chacune avec la cde set.

Pour imprimer les valeurs des variables prévues, c'est la cde put

-------------------------------------------------------------------------------------------------------------------

Avec les liens, j'ai trouvé pas mal de choses intéressantes.

Dans ma SuSE aussi , en particulier j'ai le prog d'interface graphique : SpecTcl


Je suis pas certaine de pouvoir masquer au moins une partie de mon IP sur langochat, parce que ces variables jouent sur une partie de l'identification affichée et ça c'est un "bonus" de langochat !

Génial lorsqu'on lit leur charte !!!

<div class='quotetop'>Citation </div>

Pourquoi choisir Langochat ?

La sécurité avant tout

Contrairement aux autres réseaux, nous refusons tous les canaux portant sur des sujets illicites. De plus, les utilisateurs de langochat sont protégés par un systeme de masquage de l'adresse : ils ne peuvent pas être attaqués par d'autres utilisateurs.[/b]