作者: Koichi Yamamoto
日時: 2004/3/15(01:04)
こんにちは、山本です。

"HFC01730@... (水羽信男)"さんは書きました:
>  ようやく本業の方を一つ仕上げて、余裕が少しだけですが、できました。

お疲れさまです。Tclがお仕事の効率化向上につながるといいですね。

>  先日(といっても随分前)のご教示をもとに、unique.tclをfor構文から
> foreach構文に書き換えました。

unique.tclを読み直して一つ別の問題に気づきました。

    foreach i $data3 {
        lappend data4 "$i [regexp -all $i $data3]"
    }

regexp -all を使って $data3 の中に含まれる $i を数えていますが、
例えば次のようなデータがあると「山本幸一」という名前を二重に
数えてしまいます。

    山本幸一 やまもとこういち 19xx yy大学
    山本幸一郎 やまもとこういちろう 19xy yx大学

この辺りの処理は、↓のようにするとよいかもしれません。

    foreach i [lsort -unique $data3] {
        lappend data4 "$i [llength [lsearch -all $data3 $i]]"
    }

>  でも、どうしたら山本さんのようにすっきりした考えが、
> できるようになるのでしょうか。

私は7年ほどTclをツールとして使っていますし、この間には
他の方が作成したTclのスクリプトもいろいろ見てきましたから、
ノウハウの蓄積はそれなりにあるだろうと思っています。

例えば、foreachコマンドでは複数の要素を取り出す↓のような
使い方もあるのですが、こういうのはfj.comp.lang.tcl辺りで
見かけて知りました。こういう知識を蓄積することでTclの
書き方を覚えていったのだと思います。

    foreach {i j k} $elements { … }

>  もう昔のように、自分の「できないこと」に焦りを感じほどの
> 歳で無くなりましたが、それでもアーァという思いは残ります。

全然焦らなくていいですよ。「Tool Command Language」という名前が
表すように、ご自身の必要なときに「道具」としてのTclの使い方を
学んでいけたらと思います。

ちなみに私は職業プログラマですが、これまでTclを使った製品や
サービスを開発したことはなく、あくまで数ある道具の中の一つとして
Tclを使い続けています。

--
Koichi Yamamoto, 
http://homepage3.nifty.com/yamakox/