Survivre avec Tcl

SYNTAXE ?

#! /usr/bin/tclsh
# commentaires
[exécution immédiate]
{exécution tardive}
{$i} non substitution
\$ non substituion
eval $i # exécute la commande contenue dans la variable

VARIABLES

set i = 2Affectation
set chaine "de caracteres"Affectation
$i ou ${i}Valeur de i
puts $iAffichage
format "%s ; %d" $chaine $iAffichage formatée
incr iIncrémente i
$argcnombre d'arguments
$argvarguments de la commande
$argv0nom de la commande
upvar $src dst copie de la référence d'une variable

chaîne de caractères

string length $chaineLongueur d'une chaine
string index $chaine 01er caractère de la chaine
string range $chaine $deb_inclus $fin_inclus Intervalle de caractère
string compare $chaine1 $chaine2Compare

liste

list coucou "une chaine" v 5Crée une liste
set maliste [list b a d c] Affecte une liste
llength $malisteNombre d'éléments
lindex $maliste 01er élément
lrange $maliste $deb_inclus $fin_inclus Intervalle d'éléments
lsort $malisteTrier la liste
linsert $maliste $ind $elm Insérer un élément dans la liste
split "b_a_d_c" _ Convertit une chaine en liste en indiquant le separateur

table

set matable(boire) verre
set matable(manger) assiette
Crée une table
$matable(boire)Accès à un élément
array exists matableExistence d'une table
array names matableListe les index d'un table
array get matable Liste les couples index/valeur
array set matable $maliste Créer une table à partir d'une liste
parray matable Affiche la table

TEST

avec IF

if { condition } {
  instr
[ } elsif { condition } { instr ]
...
[ } else { instr ]
}

avec SWITCH

switch $var {
  val1 {
    instr
  }
  val2 {
    instr
  }
  default {
    instr
}
Choix de la règle de concordance, cf option : exact, glob, regexp

BOUCLE

FOR avec itération

for { init } { condition } { suivant } {
  instr
[ break ]
[ continue ]
}
for { set i 0 } { $i < 100 } { incr i } {
  puts $i;
}

avec liste

foreach var $maliste {
  instr $valeur
}

WHILE

while { condition } {
  instr
}

FONCTION

DéclarationAppel
proc name { arg1 arg2 } {
  instr
  return 0
}
name arg1 arg2
proc coucou { arg1 arg2 } {
  puts $arg1
  puts $arg2
  return 0
}
coucou trop bien

Manipulation de fichiers

set f_id [open $nomfichier "r"] ouverture d'un fichier en lecture
set f_id [open $nomfichier "w"] ouverture d'un fichier en écriture
set contenu [read $f_id] lit un fichier
set contenu [gets $f_id] lit une ligne d'un fichier
set contenu [read $f_id $n] lit n octets d'un fichier
puts $f_id $contenu écrit dans un fichier
seek $f_id $n déplacement dans le fichier au enieme octet
close $f_id fermeture du fichier

Gestion des erreurs

if [ catch { instr_avec_erreur_potentielle } ] {
  instr_avec_traitement_erreur
}


home up envoyer un mail

Debian Get FireFox Valid HTML 4.01! Valid CSS!