Tcl

導入

バイナリでの配布は、Tcl/Tk Softwareに情報があります。

ActiveTcl

マルチプラットフォームのTcl/Tkの実装です。

Download and Install Tcl: ActiveTcl | ActiveState

  • Tclsh … Tcl
  • tkcon … Tk
  • Wish … TclとTk

Tclsh

Wish

Tcl Commands

基本

コマンド

command1
command2
command1; command2
[1] Commands. - ActiveTcl 8.6 Documentation
cmd a {*}{b  [c]} d {*}{$e  f {g h}}
cmd a     b {[c]} d    {$e} f {g h}
[5] Argument expansion. - ActiveTcl 8.6 Documentation

変数

Tclオブジェクト
set A 10
set B 1.5
文字列

空白を含むときには、「""」または「{}」で囲みます。

set A hello
set A "hello world"
set A {hello world}
% set A hello world
wrong # args: should be "set varName ?newValue?"
リスト

定義方法は文字列と同一です。空白が区切りと認識され、それぞれの要素へインデックスを指定してアクセスできます。

set A {hello world}
set A "hello world"

puts [lindex $A 1] # world
連想配列
set A(B) 10
puts $A(B) # 10
ハンドル
set A [open "filename" r]
Tcl Data Types | TutorialsPoint

puts

チャンネルへ書き込めます。

puts ?-nonewline? ?channelId? string
puts ?-nonewline? ?channelId? string
% puts a
a

% puts a b
can not find channel named "a"

% puts "a b"
a b

set

変数を読み書きできます。

set varName ?value?
set manual page - Built-In Commands
% set A 10; # write
10

% set A; # read
10

変数名の前にドル記号 (dollar-sign) を付けると、それが変数として処理されます。[8] Variable substitution. - ActiveTcl 8.6 Documentation

% puts $a
10

角かっこ (bracket / 大かっこ) でコマンドを囲むと、その評価結果を代入できます。[7] Command substitution. - ActiveTcl 8.6 Documentation

% set B [expr 2+3]
5

array

配列を処理できます。

array option arrayName ?arg arg ...?
array manual page - Tcl Built-In Commands
% array set arr {
a 1
b 2 }

% array get arr
a 1 b 2

% puts $arr(b)
2
% set arr(0) 10
10
% set arr(1) 20
20
% set arr(foo) 30
30

% set arr(0)
10

expr

式を評価させられます。

expr arg ?arg arg ...?
expr manual page - Tcl Built-In Commands
% expr 2+3
5

package

パッケージを読み込めます。

package require -exact package version
package require -exact package version - package manual page - Tcl Built-In Commands

tclvars (定義済み変数)

変数  
auto_path  
tclvars manual page - Tcl Built-In Commands

Tk Commands

参考

複数の技術系サイトから、まとめて検索