こんにちは、山本です。
"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/