======[[http://en.wikipedia.org/wiki/Tcl|TCL]]/Jacl====== ====Externi odkazy==== [[http://publib.boulder.ibm.com/infocenter/wsdoc400/v6r0/index.jsp?topic=/com.ibm.websphere.iseries.doc/info/ae/ae/rxml_commandline.html|Jacl]] na IBM\\ [[http://utenti.multimania.it/yanorel6/2/ch55.htm|dalsi popis Jacl]]\\ ====Promenne==== set a 5 ... nastavi promennou a\\ set b $a ... nastavi promennou a podle promenne b\\ unset a b ... zrusi definici promenne a a b\\ info exist a ... vrati 0 pokud promenna neexistuje, jinak 1\\ set len [string length RETEZEC] ... priradi promenne len delku retzce RETEZEC\\ global len ... nadefinuje promennou $len v procedure z globalniho globalni prostredi - lze k ni pristupovat z procedury\\ cisla\\ expr $CISLO*4 ... provede vypocet\\ expr sqrt(5*$CISLO) ... vypocita odmocninu z 5 x CISLO\\ incr a ... zvetsi hodnotu a o 1\\ retezce\\ append "ahoj" vazeny pane ... prida na konec skupiny pismen = ahojvazenypane\\ string length $TEXT ... delka retezce $TEXT\\ string index "Ahoj" 2 ... vypise znak o indexu 2 (o)\\ string range {Ahoj, jak se mas} 3 6 ... vypise znaky od indexu 3 po index 6\\ string compare TEXT1 TEXT2 ... porovna TEXT1 a TEXT2. -1 pokud je TEXT1 lexikograficky mensi, 1 pokud je vetsi\\ string match TEXT1 TEXT2 ... 1 pokud se texty shoduji, jinak 0\\ string first "jak" "Ahoj jak se mas" ... vrati index 5 prvniho vyskytu podretezce, jinak -1\\ string last "jak" "Ahoj jak jak se mas" ... vrati index 9 posledniho vyskytu podretezce, jinak -1\\ string tolower AHOJ ... prevede text na mala pismena\\ string toupper ahoj ... prevede text na velka pismena\\ string wordend {Ahoj, jak se mas} 1 ... vrati index posledniho pismene slova, na ktere ukazuje index 1 (4)\\ string wordstart {Ahoj, jak se mas} 1 ... vrati index prvniho pismene slova, na ktere ukazuje index 1 (0)\\ string trim {Ahoj, jak se mas} ?Aash? ... oreze text na zacatku a na konci o pismena Aash az po bile znaky\\ string trimleft {Ahoj, jak se mas} ?Aash? ... oreze text na zacatku o pismena Aash az po bile znaky\\ string trimright {Ahoj, jak se mas} ?Aash? ... oreze text na konci o pismena Aash az po bile znaky\\ regexp "jak s" {Ahoj, jak se mas} ... najde regularni vyraz v textu a vypise 1, jinak 0\\ seznamy - specialni typy retezcu - prvky oddelene bilym znakem\\ var SEZNAM [list a b c d] ... vytvoreni seznamu\\ lindex $TEXT 0 ... (List index) ukaze prvek/slovo o indexu 0\\ lindex $TEXT end ... ukaze posledni slovo, prvek\\ llength $TEXT ... (List length) ukaze pocet slov, prvku\\ lrange $SEZNAM 2 4 ... vrati 2 az 4 prvek seznamu\\ lappend SEZNAM e f ... prida dalsi prvky do seznamu e a f - a b c d e f\\ linsert $SEZNAM 4 x y ... vrati seznam, kde prida mezi 5. a 6. prvek prvky x y\\ lreplace $SEZNAM 4 5 v w ... vrati seznam, kde se 5. a 6 prvek nahradi v a w\\ lsearch -exact $SEZNAM d ... vrati index prvku, ktery odpovida zadani "d"\\ lsearch -regexp $SEZNAM ah ... vrati index prvku, ktery odpovida regularnimu vyrazu "ah"\\ lsort -decreasing $SEZNAM ... vrati seznam, ktery je setrizeny od nejvetsiho po nejmensi\\ lsort -increasing $SEZNAM ... vrati seznam, ktery je setrizeny od nejmensiho po nejvetsi\\ concat $TEXT $SEZNAM ... vrati spojeny seznam TEXT a SEZNAM\\ split {ahoj:pane} ?:o? ... rozdeli text na prvky (prvky oddelene prazdnym znakem - mezerou), oddelovaci znaky : a o\\ join {ahoj pane tomasi} : ... spoji prvky seznamu znakem : misto mezery = ahoj:pane:tomasi\\ \\ pole - je seznam, kde indexy jsou slova\\ set POLE1(prvek1) hodnota1 ... definuje pole POLE1 s indexem prvek1\\ array get POLE1 ... vypise vsechny prvky pole\\ array exists POLE1 ... vrati 1, pokud promenna existuje a je typu pole\\ array size POLE1 ... vrati pocet prvku v poli\\ array names POLE1 ... vrati nazvy indexu\\ array startsearch POLE1 ... zapocne prohledavani indexu pole POLE1, vrati ID prohledavani\\ array nextelement POLE1 s-1-POLE1 ... vrati jmeno dalsiho indexu, pokud nejsme jeste na konci prohledavani\\ array anymore POLE1 s-1-POLE1 ... vrati 1 pokud lde dal hledat, 0 pokud uz nejsou dalsi indexy\\ array donesearch POLE1 ... ukonci prohledavani indexu pole POLE1, zrusi ID prohledavani\\ ====podminky==== if boolean then body1 else body2 ... podminky\\ if ![info exists a] {set a 0} else {incr a} ... podminka - pokud neexistuje promenna, definuje ji a priradi ji cislo nula. Jinak ji zvetsi\\ switch flags value {pat1 body1 pat2 body2 ...} ... podminka s vyberem\\ switch -exact -- $HODNOTA { 1 { incr(A) } 2 { incr(A); incr(A) } default { return A } } ... priklad podminky s vyberem\\ ====Cykly==== foreach HODNOTA SEZNAM commandBody \\ foreach num {1 3 5 7 11 13} { puts $num } ... vypise vsechna cisla\\ while booleanExpr body \\ set i 0; while {$i < 5} { puts "i is $i"; incr i} ... priklad\\ for initial test final body\\ set numbers {1 3 5 7 11 13}; for {set i 0} {$i < [llength $numbers]} {incr i 1} { puts "i is $i" } ... priklad for\\ ====Zakladni prikazy==== source c:/temp/script/SKRIPT.jacl ... spusti externi skript\\ eval exec ls -l ... spusti "ls -l" z shellu\\ eval exec ls / > /tmp/aaa\\ puts stdout {Ahoj - $text} ... vypise na obrazovku 'Ahoj - $text', neprovede se vyhodnoceni\\ puts stdout "$text ma [string length $text] znaku" - Vypise obsah promenne text a pocet znaku - vyhodnoti se vyrazy\\ gets stdin AAA ... nacte od promenne AAA retezec ze standardniho vstupu\\ lindex $argv 0 ... prvni parametr z volani interpreta/skriptu\\ catch {expr 20 / 5} VYSLEDEK ... priradii vysledek do promenne VYSLEDEK. vrati 0\\ catch {expr aaa / 5} VYSLEDEK ... priradii chybu do promenne VYSLEDEK, vrati 1\\ ====Prace se soubory==== open /tmp/aaa w ... otevre soubor pro zapis a vrati FileID\\ puts FileID aaa ... zapise do souboru FileID\\ close FileID ... zavre soubor FileID\\ open /tmp/aaa r ... otevre soubor pro cteni a vrati FileID\\ gets FileID ... precte radek ze souboru FileID\\ close FileID ... zavre soubor FileID\\ ====Procedury==== Definice procedury\\ proc podil {x y} { set vysledek [expr $x/$y] puts $vysledek } podil 10 5 ... provede proceduru, preda argumenty 10 a 5\\ global len ... nadefinuje promennou $len v procedure z globalniho globalni prostredi - lze k ni pristupovat z procedury\\ ====Jacl v html==== <applet width=300 height=100 code=cornell.applet.Shell.class> <param NAME="jacl.script VALUE="buttons.tcl"> </applet>