Tcl - jätk Tcl - sõnetöötlus string length sõne - sõne pikkus string range sõne algus lõpp Alamsõne eraldamine sõnest (esimese sümboli indeks on null). Kohal lõpp võib esineda võtmesõna end string match näidis sõne Tulemuseks 1, kui sõne sobib näidisega (csh-stiilis: * ? [ ] \ { } ~ ); 0, kui ei sobi string compare sõne1 sõne2 -1 , kui sõne1 < sõne2 (leksikograafiliselt) 0, kui sõne1 == sõne2 1, kui sõne1 > sõne2 string index sõne pos Tagastab pos-nda märgi (lugemine algab nullist) või tühisõne, kui pos on väljaspool sõne piire string first väikesõne suursõne Otsitakse väikesõne esimest esinemist suursõnes ja tagastatakse esimese märgi indeks suursõnes või -1, kui sisaldumist ei olnud string last väikesõne suursõne Otsitakse väikesõne viimast esinemist suursõnes ja tagastatakse esimese märgi indeks suursõnes või -1, kui sisaldumist ei olnud string tolower sõne Suurtähed --> väiketähed string toupper sõne Väiketähed --> suurtähed string trim sõne ?eraldajad? Sõne algusest ja lõpust eemaldatakse kõik antud eraldajate esinemised (vaikimisi tühik, TAB, NL ja CR) string trimleft sõne ?eraldajad? - algusest string trimright sõne ?eraldajad? - lõpust format formaadisõne ?väärus ... ? Sõne moodustamine väärtus(t)est formaadi järgi (vrd. sprintf ANSI C-s) scan sõne formaadisõne muutuja ?muutuja... ? Muutuja(te) väärtustamine sõnest formaadi järgi (vrd. sscanf ANSI C-s) regexp, regsub Sõnest saab otsida ka regulaaravaldisena antud näidise järgi ning teha asendusi. regexp ?-indices? ?-nocase? ?--? regavaldis sõne ?muutuja? ?lisamuutuja ... ? Tulemuseks on 1, kui sõne sisaldab regulaaravaldisega sobivat osa; 0, kui ei sisalda. Esimene muutuja (kui esineb) saab väärtuseks sõneosa, mis sobis avaldisega, ülejäänud on alamavaldistega (ümarsulgudes) sobivate sõneosade jaoks. regexp {([0-9]+)\ *([a-z]+)} "Walk 10 km" a b c ==> 1 set a ==> 10 km set b ==> 10 set c ==> km -indices korral väärtustatakse muutujad sobiva(te) osa(de) algus- ja lõpuindeksitega. regsub ?-all? ?-nocase? regavaldis sõne asendussõne tulemusmuutuja Tulemus sama, mis regexp käsul (1 või 0), aga avaldisega sobiv sõneosa asendatakse asendussõnega ja tulemus kirjutatakse tulemusmuutujasse. Vaikimisi tehakse üks asendus, -all korral asendatakse kõik sobivad osad. & asendussõnes tähistab avaldisega sobinud sõneosa originaalsõnes. Tcl - töö failidega pwd - annab jooksva kataloogi täisnime cd ?kataloog? Tulemuseks tühisõne, muudab jooksvat kataloogi (ilma argumendita $HOME) Failide töötlemisel kasutatakse järgmisi juurdepääsumeetodeid: r olemasolev fail ainult lugemiseks (vaikimisi) r+ olemasolev fail lugemiseks ja kirjutamiseks w ainult kirjutamiseks. Olemasoleva faili sisu hävib, vajadusel luuakse uus fail w+ lugemiseks ja kirjutamiseks. Olemasoleva faili sisu hävib, vajadusel luuakse uus fail a ainult kirjutamiseks (olemasoleva faili korral lisatakse lõppu, vajadusel luuakse uus fail) a+ lugemiseks ja kirjutamiseks (olemasoleva faili korral seatakse jooksev positsioon faili lõppu, vajadusel luuakse uus fail) glob ?-nocomplain? ?--? näidis ?näidis ...? Tulemuseks nimistu kõigist failinimedest, mis rahuldavad mõnda antud (csh-stiilis) näidistest. Ilma -nocomplain liputa annab vea, kui nimistu osutub tühjaks. open nimi ?meetod? Tulemuseks failiidentifikaator, mida tuleb kasutada kõigis järgnevates failikäskudes. Avab faili antud meetodil. close ?failiident? Tulemuseks tühisõne, fail suletakse gets failiident ?muutuja? Lugeda rida. Tulemuseks rea pikkus, kui muutuja on antud või rida ise, kui muutuja puudub. Faili lõpu korral tulemuseks -1 või tühisõne (vastavalt). read failiident barv Lugeda failist antud arv baite. read ?-nonewline? failiident Lugeda failist kõik järelejäänud baidid (-nonewline korral faili lõpus olevat reavahetust ignoreeritakse) seek failiident nihe ?lähtepunkt? Viia jooksev positsioon failis antud nihkele (lähtepunktiks nihke arvutamisel on vaikimisi faili algus: start , võimalikud veel current ning end ). Tulemuseks tühisõne. tell failiident Tulemuseks jooksev positsioon failis eof failiident Tulemuseks 1, kui jooksev positsioon on faili lõpus, 0, kui mitte puts ?-nonewline? ?failiident? sõne Kirjutada sõne faili (koos reavahetusega, kui -nonewline puudub). Vaikimisi failiks on stdout, käsu tulemuseks tühisõne flush failiident Kirjutada modifitseeritud puhvrid kettale (ka sulgemine teeb selle töö). Tulemuseks tühisõne. file tingimus nimi Informatsiooni saamine antud nimega faili kohta (kataloogist ja inode-st) file exists nimi 1, kui leidub; 0 ei file isfile nimi 1, kui tavaline fail, 0 ei file isdirectory nimi ... kataloog file readable nimi 1, kui kasutajal r-õigus file writable nimi ... w-õigus file executable nimi ... x-õigus file owned nimi 1, kui kasutaja on faili omanik, 0, kui ei ole file type nimi Väärtuseks file, directory, link, socket, fifo, characterSpecial, blockSpecial file size nimi Väärtuseks faili pikkus baitides file atime nimi access time sekundites alates 0:00 01.01.1970 file mtime nimi ... modification time file stat nimi massiivinimi Väärtustab etteantud massiivi elemendid: atime, ctime, dev, gid, ino, mode, mtime, nlink, size, type, uid file tail nimi Annab faili puhta nime ilma kataloogideta file dirname nimi Annab nimest kataloogide osa file extension nimi Annab nimest viimase punkti järel oleva osa (koos punktiga) file rootname nimi Annab nime ilma laiendita (ilma viimase punkti ja sellele järgneva sõneta) file readlink nimi Annab nime, millele viit viitab Näide. Programm tgrep näidis failinimi if { $argc != 2 } { error "Kasuta kujul: tgrep naidis failinimi" } set f [open [ lindex $argv 1 ] r ] set pat [ lindex $argv 0 ] while { [ gets $f line ] >= 0 } { if [ regexp $pat $line] { puts stdout $line } } close $f Tcl - protsessid exec ?-keepnew? arg ?arg ...? Luua alamprotsess(id). Esimeseks argumendiks täidetava programmi nimi või käsk, argumentidena lubatud ka suunamissümbolid, viimaseks argumendiks võib olla & (foonile). Tulemuseks täidetud programmi standardväljund või tühisõne, kui toimus ümbersuunamine; foonile pandud töö(de) korral on käsu tulemuseks nimistu protsessinumbri(te)st. Suunamissümbolid nagu Unixis, suunamiseks Tcl-s avatud failidesse, mille jaoks on olemas failiident: >@ failiident ( 2>@ >&@ <@ ) NB! reeglina oodatakse alamprotsessi lõppemist ning alles siis antakse väljund tulemuseks. exec ei tegele käsurea laiendamisega, see tuleb ise teha näit. glob abil. Näit: rm *.o eval exec rm [ glob *.o] Tulemuse lõpus olevat reavahetust ignoreeritakse, -keepnew korral mitte. Üldiselt on exec kasutamine mõistlik catch mõjupiirkonnas. exit ?status? - protsessi lõpetamine ja koodi tagastamine ülemprotsessile (0 - ok) open |käsk ?meetod? Tulemuseks failiident. Avab konveieri (toru) antud juurdepääsumeetodil. Käsk on nimistu, mille elemendid on samal kujul exec-käsu parameetritega. Käskudega gets ning puts saab lugeda ja kirjutada torusse (andmete tegelikuks edasiandmiseks võib olla vajalik flush-käsu kasutamine). set f1 [open {|tbl | ditroff -ms} w] pid ?failiident? Ilma argumendita annab jooksva protsessi identifikaatori. Failiident peab olema saadud toru avamisega, sel juhul tagastatakse nimistu toruga seotud protsessiidentifikaatoritest. Keskkonnamuutujad on protsessidele kättesaadavad massiivist env (indeksiks vastava muutuja nimi) Tcl - info Järgnevate käskude tulemuseks on nimistu (võimaliku näidisega sobivatest) nimedest: info commands ?näidis? - kõik käsud info procs ?näidis? - loodud protseduurid info vars ?näidis? - kättesaadavad muutujad info globals ?näidis? - globaalmuutujad info locals ?näidis? - protseduuri lokaalmuutujad (või tühisõne, kui pole protseduuri sees) info exists muutuja - 0, kui muutuja pole kättesaadav; 1, kui on info args protsnimi - nimistu protseduuri formaalsetest parameetritest info body protsnimi - protseduuri sisu Tcl-programmina info default protsnimi paramnimi muutuja Tulemuseks 1, kui antud protseduuris on antud parameetril vaikimisi väärtus; väärtus salvestatakse antud muutujasse. Vastasel juhul tulemuseks 0 ning muutuja väärtus ei muutu Tcl - mitmesugust rename vanakäsk uuskäsk Tcl-käsu ümbernimetamine. Uuskäsk ei tohi varem olemas olla. Kui uuskäsk on tühisõne, siis vanakäsk kustutatakse. Annab tühisõne. trace variable muutuja operatsioonid käsk Antud käsk täidetakse iga kord, kui antud muutujaga tehakse mõni antud operatsioonidest. Operatsioonid on sõne võimalikest tähtedest r, w, u (read, write, unset). Tulemuseks tühisõne. Käsk saab ette 3 parameetrit: muutuja nimi, elemendi nimi (kui muutujaks oli massiiv) või tühisõne ning operatsioon. time prog ?kordustearv? Annab programmi täitmise keskmise aja, kui programmi täidetakse antud arv kordi (vaikimisi 1). unknown käsk ?parameeter ...? Kasutajaprotseduur, mis täidetakse siis, kui programmis esineb tundmatu käsk. Tundmatu käsu argumendid antakse edasi (asendused tehakse!) protseduurile unknown.