1 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 14:52:44 ] 【英語サイト】 プロジェクト本拠地 tcl.sourceforge.net/ 最新版ソースコード ftp://ftp.tcl.tk/pub/tcl/nightly-cvs/ The Tcler's Wiki wiki.tcl.tk/ The comp.lang.tcl Newsgroup groups.google.com/group/comp.lang.tcl/ ActiveTcl www.activestate.com/products/activetcl/ 【日本語サイト】 もっとTcl/Tk www.interq.or.jp/japan/s-imai/tcltk/ Tcl/Tk Scripting Laboratory www.geocities.jp/urano343/tcltk.html Tcl/Tk Primer mibai.tec.u-ryukyu.ac.jp/~oshiro/Doc/tcltk_primer/ Tcl 8.4.1 Manual Command Reference www.freesoftnet.co.jp/tclkits/doc/TclCmdRef/tcl_contents_jp.htm CategoryTclTk - mynote reddog.s35.xrea.com/wiki/CategoryTclTk.html 【前スレ】 ●●●●TCL/TKなら俺に聞け●●●● pc11.2ch.net/test/read.cgi/tech/1033628416/
231 名前:本田 [2008/04/06(日) 12:46:05 ] >>229 >tcltk8.5.2-014-20080405.exe sourceforge.net/project/showfiles.php?group_id=204414&package_id=248905&release_id=589844
232 名前:gth [2008/04/06(日) 14:25:37 ] アイム 出口
233 名前:七つの海の [2008/04/10(木) 23:24:00 ] ×テックルティーケー ○ティコティケェィーィエ
234 名前:デフォルトの名無しさん [2008/04/13(日) 03:08:28 ] x86-32bit Linuxでは正常に動いてたプログラムをx86-64bit Linuxで 動かそうとしたらcannot execute binaryとなってダメなんですけど、 どうすればいいんですか?原因はなんなんですか? 中学生にも分かるように説明してくれませんか?
235 名前:本田 [2008/04/14(月) 06:00:48 ] >ActiveTcl 8.5.2.0 Apr, 2008 www.tcl.tk/
236 名前:本田 [2008/04/14(月) 06:02:18 ] >>234 サポートセンターに電話すべし。
237 名前:デフォルトの名無しさん [2008/04/16(水) 04:48:20 ] >>234 ですが自己解決しました。 libc6-i386というのをインストールしたら64ビットOSでも 動きました。でも、32ビットOSのときよりも動きが遅いです。
238 名前:本田 [2008/04/22(火) 08:24:49 ] snackamp.sourceforge.net/ >SnackAmp sourceforge.net/projects/snackamp/ >SnackAmp is a powerful multi-platform audio music (mp3, ogg ,wav, streams ...) player and organizer for large music collections. >Manage your entire collection, including ID3 tagging and auto-playlisting. Integrated web server for remote control/streaming
239 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 15:58:13 ] ファイルから読み込んだ文字列中に"があるとうまく処理ができません。 たとえば、中身が He said "I am a boy" のようなfileに対して set ch [open "file"] while {[gets $ch line] >= 0} { puts [lindex $line 0] } を実行すると unmatched open quote in list while executing "lindex $line 0" となって止ってしまいます。 (mingw のtclsh84 ) このような"の入った文字列を処理するにはどうしたらよいのでしょうか?
240 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 20:11:53 ] クォートをエスケすりゃいんじゃね gets $ch line regsub -all \" $line \\" buf puts [lindex $buf 0]
241 名前:239 mailto:sage [2008/05/02(金) 20:56:37 ] 自己解決…って>>240 さんの書かれた通りです。 あ、自分のは -all 忘れてましたわ。 ありがとうございます。 ちなみに、\\"で動くのですが、それだとemacsの色付けが異常になるので\\\"にしました。
242 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 18:25:21 ] 使い勝手悪い言語だなあ。
243 名前:デフォルトの名無しさん [2008/05/06(火) 10:44:47 ] Active Tcl ver.8.4.19に改版されている。 ver.8.4.17以降2ヶ月毎に改版されている。随分頻繁に改版しているけど、どこが換わっているのやら。
244 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 16:18:48 ] >>242 regularExpressionの速さはピカ一ですが
245 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 20:01:20 ] そうなの?
246 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 04:16:30 ] コーディングにかかる時間とか、バグのとりやすさのほうが重要だろ。 この観点から見るとtclひどすぎ。 正規表現使う構文にしてもすっきりしてないし。
247 名前:デフォルトの名無しさん [2008/05/09(金) 12:00:11 ] わかったからすきなの使いなよ。
248 名前:デフォルトの名無しさん [2008/05/09(金) 12:42:24 ] まさに正論
249 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 08:49:38 ] 例に Perl/Tk 使ってみ。 Tcl ってよー出来てるって思えるから。
250 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 13:17:13 ] Tkを使う為の言語としては最強だよな。 他がちょっと弱いけど。
251 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 13:44:24 ] Cと組み合わせれば良いじゃん。
252 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 02:02:59 ] 恥を忍んで質問させて下さい。 Win版のActiveTclのExpectは、sendの-breakが無いので、 一旦openしてfconfigureでbreakするのを試みてます。 set fd [open "COM1:" RDWR] fconfigure $fd -ttycontrol {BREAK 1} exp_sleep 2 fconfigure $fd -ttycontrol {BREAK 0} exp_spawn -open $fd でも、最後のexp_spawnがうまくいかないです。何故でしょう?
253 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 04:37:43 ] 239みたいな例に対応できる汎用的方法がよく分からない。 '"'だけでなく'{'とか'}'とかも気をつける必要がある気がするんだけど。 tcl faq list eval とかで検索してみたけど結局どうすれば。
254 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 17:33:48 ] 複数行にわたって書いているリストの中で コメントをなんとか書けないものかなあ
255 名前:本田 [2008/05/22(木) 06:02:40 ] >exp_spawn failed on Windows 2003 with DEP(DataExecutionPrevention) lists.activestate.com/expect%40listserv.ActiveState.com/6A3BD65D48E1EC45AF1B466D4E2A470F02630419%40HQSX5711.Hospira.corp
256 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 08:27:47 ] tclshでプロンプト(PS1)の設定は出来ますか?
257 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 21:06:59 ] こうじゃね? たとえば、 set tcl_prompt1 {puts -nonewline [info hostname]@[pwd]> } で、ラインコンティニュー用は tcl_prompt2に設定 set tcl_prompt2 {puts -nonewline continue?> }
258 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:50:15 ] >>257 なんやこれ。こんなんできたのか。長年使ってるけどはじめて知ったわ
259 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:27:29 ] >>257 出来た! ありがとうございます
260 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 04:51:53 ] aliasの設定なんか無理かな? ~/.tclshに ls color=auto を入れたいんだけど
261 名前:本田 [2008/05/25(日) 06:00:16 ] >C++/Tcl cpptcl.sourceforge.net/ >A C++ library for interoperability between C++ and Tcl >C++/Tk cpptk.sourceforge.net/ >A complete C++ interface to the Tk GUI toolkit
262 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 20:12:22 ] Tcl/Tk 8.5でBLT-2.4z使えてる方はいらっしゃいますか? パッチとか修正とか、かなり手を入れないと使えないのでしょうか。
263 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:39:25 ] >>239 ここにその議論がある。wiki.tcl.tk/2157 要するにsplitすればよい。ただし連続する空白文字に対する動作が意図と異なるかもしれない。 while {[gets $ch line] >= 0} { puts [lindex [split $line] 0] } あるいは、 puts [join [split $line] |] などに書き換えて様子を見よう。 >>262 Windows版の場合、tcl84.dllに直接リンクしてしまってるからどうにもならないよね。 Tcl8.3あたり以降のextension作成のガイドラインから外れた古い作りになっているんだろう。 実際何年も更新されてないようだし。 自前ビルドしてやるしか。
264 名前:262 mailto:sage [2008/06/03(火) 11:42:06 ] >>263 jos.decoster.googlepages.com/bltfortk8.5.2 を基に試してみました。 demosやexamplesの一部 (多く?) が失敗するけど、なんとなく使えそうです。 BLT-3.0で対応するのかなぁ。
265 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 18:22:11 ] reddog.s35.xrea.com/wiki/A%20Stub-enabled%20BLT2.4z%20for%20Windows.html これは試した?
266 名前:262 mailto:sage [2008/06/16(月) 16:43:53 ] 後出しでごめんなさい。Linuxです。 Fedora 9で試してまして、そうこうしてるうちに、>>263 の方法で対応したパッケージがリリースされました。 https://bugzilla.redhat.com/show_bug.cgi?id=446862 で対処してくださったようです。
267 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 19:54:08 ] tk でコンボボックスの幅を指定するにはどうすればいいでしょうか? また、できれば選択した文字列が表示されるテキストボックス部分を 複数行表示にしたいのですが、可能でしょうか?
268 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 21:03:00 ] >>tk でコンボボックス tile拡張のttk::comboboxのやつか? ttk::combobox .cb -width 100 とかでいけんじゃね >>複数行表示にしたいのですが、可能でしょうか? 不可能じゃね
269 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 03:20:15 ] 質問があります。 set a hoge set b a set c b とやって、cからたどってhogeに辿り着くには どうすればいいのでしょうか。 $$$c とか $[$[$c]] とかいろいろやってみたのですが できません……。
270 名前:デフォルトの名無しさん [2008/06/27(金) 22:53:22 ] set a hoge set b a set c b proc aho foo { upvar $foo bar return $var } puts [aho [aho $c]]
271 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 23:22:33 ] >>269 puts [set [set $c]] >>267 2行は無理。BWidgetsのコンボを改造すればできるかも
272 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 00:44:17 ] >>271 へ〜、setって変数の参照にも使えるんだ。 勉強になりますた。
273 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 03:31:47 ] >>263 > ただし連続する空白文字に対する動作が意図と異なるかもしれない。 この制約がどうにも辛いです。 連続した空白があってもそれをただ一つの区切りとみなしつつ、 安全にファイルなどから読み込んだ文字列を処理するには どうしたらいいのだろうか。
274 名前:269 mailto:sage [2008/06/28(土) 04:50:38 ] >>270 >>271 ありがとうございます。
275 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 06:01:58 ] >>273 そんなの教わったregsub使えよ while {[gets $ch line] >= 0} { puts [lindex [split $line [regsub -all -- {\s+} $line { }]] 0] }
276 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 12:50:19 ] >>273 set line {He said "I am} foreach word [string map {\" \\"} $line] { puts $word }
277 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 14:34:54 ] >>276 '{' inside string
278 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 17:20:38 ] 文字列の中に"や{がある事を気にする必要がある時と 必要がない時の条件がよく分からん。。。 あと、ファイルから読み込んだ行を一律regsubしてしまって 常に構わないのかどうかも。。。
279 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 21:56:13 ] >>278 文字列をリストに自動変換してるところは気にしろ。文字列をforeachしたり リスト系のコマンドに直接文字列を渡したりしてるところは注意だ。 >>276 set line "He said \"I am \{ a boy \}" foreach word [string map {\" \\\" \{ \\\{ \} \\\}} $line] { puts $word }
280 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 23:10:12 ] > \} \\\} これは必要? あってもなくても同じではないの?
281 名前:本田 [2008/07/01(火) 06:46:34 ] >Tcl/Tk 8.5.3 June 30, 2008 >Tcl/Tk 8.6a1 June 25, 2008 >Tcl/Tk 8.4.19 Apr 18, 2008 www.tcl.tk/
282 名前:263 mailto:sage [2008/07/02(水) 07:53:23 ] >>273 そもそもの話をしてもいいだろうか。 こんなコードは試しましたか? set lines {He said "I am a boy"} set i 0 foreach l $lines { puts $i:$l incr i } Tclのlist「形式」は平易ながらバイナリデータまで扱える立派な「データ構造」なので、 まともに実装しようとすればTclが最初から持ってるパーサーを実装しなおすようなことになるよ。 平易ではあるがあまり(書いたソフトの)ユーザーには触ってもらいたくないデータ形式のような気がする。 コメントも使えないしね。自分自身で読み書き保存するためにはいいけど、 ユーザーに触らせるならJSONやYAMLなどのより一般的な形式がいいだろうね。 今ならtcllibのCVS HEADにライブラリが置かれてるよ。
283 名前:239 mailto:sage [2008/07/02(水) 09:03:58 ] なんか、今頃また盛り上がってるが・・・ >>282 それじゃ根本的に違うんだよね〜 getsで一行ごとにテキストファイルから読んでるの文字列に「"」があるのがミソなんで set lines {He said "I am} を処理することになるんですよ。
284 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 19:51:00 ] 8.5から文字列をリストに変換できるかどうかチェックする string is list $strが追加されてんぞ。
285 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 00:00:27 ] info completeで失敗したら、さらに1行読み込んでappendすりゃいいだけだろ そもそもデータ自体が1行ずつ処理されるように書かれていないのになぜ、1行ずつ 処理したがるのか
286 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 01:29:08 ] ファイルの文書が、必ずしも""の対応関係があっている保障はないわけだが。
287 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 01:43:11 ] たしかにそういうこともあるな flex/bisonでやるか PureTclでやるならfickle/taccle
288 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 11:09:03 ] canvasにarcなどを1000個くらい書くと激重でどうしようもありません。 自分の描画ルーチンが重いのではなく、Tkがcanvasをリフレッシュするのが激重です。 描画したアイテムを選択して移動とかするつもりはなく、単に絵が表示されればいいのですが… こんな場合は、image photoに直接力技で図形を書いていくしかないですかね。
289 名前:デフォルトの名無しさん [2008/07/05(土) 12:36:31 ] Tkのキャンバスウィジェット並みの機能ってほかのGUIフレームワークにないですかね。 書いた絵をドラッグできるとかそういう系。
290 名前:本田 [2008/07/06(日) 13:21:30 ] >>289 Zinc Is Not Canvas! www.tkzinc.org/tkzinc/index.php OpenGLが、速い環境が無いと、遅すぎてかなわん。
291 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 21:37:10 ] Zincもええが、tkpathの方がシンプルでとっつきやすいよ
292 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 00:37:16 ] tkpath使ったら早くなるかとおもったけど全然早くならなかった・・・
293 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 07:59:32 ] >>288 >>292 1000を超える描画単位(図形やウィジェットなど)をリアルタイムで取り扱うことはスクリプト言語系のツールキットでは想定されてないと思う。 素直にネイティブコードで動く言語で実装したほうが早いんじゃない? 描画結果のキャッシュでもしつつ。
294 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 20:18:40 ] いやまだ手はある。Tcl3DでOpenGLで直接描画すれば・・・!
295 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 22:18:26 ] マルチスレッド拡張使ってる人いる?
296 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 23:06:43 ] ときどき使う。
297 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 23:44:51 ] >>296 非同期で走っている複数のスレッドから進行状況や終了などをメインのスレッドで 受け取るにはどういう手段があるんでしょう? tsv でスレッド内で状況をセットして メインでpollするというぐらいしか思いつかないのですが。 メインの方で vwaitしてスレッドのほうからthread::sendなんて出来ませんよね?
298 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 06:48:22 ] C++などで書いてるソフトにTclのインタプリタを組み込んでるやつはいないだろうか。 Tcl_Eval()でTclスクリプトを実行したときにそのスクリプトにエラーが含まれていると、 エラーメッセージはResultの中に入ってる。 これをResultの代わりにエラー出力に出したいんだが、その方法がよくわからない。 やり方があるようなら教えてもらえないだろうか。
299 名前:297 mailto:sage [2008/07/10(木) 06:54:59 ] あ、だめだ。 これ以前にExpectがthread-safeで無くてスレッドからは使えないとか。 Expectを多用してるので諦めます。 community.activestate.com/forum-topic/expect-tcl-threads
300 名前:本田 [2008/07/10(木) 07:54:03 ] stderr wiki.tcl.tk/2620 stderr is one of the stdio output files opened - applications and functions tend to use it for the output of error messages.
301 名前:298 mailto:sage [2008/07/10(木) 10:32:22 ] >>300 ご協力ありがとう。 読んでみたけどどうやらこれはTclインタプリタ側(Tclスクリプト側)から 外部コマンドを呼び出したときのstderrについて議論しているみたいで、この話とはちょっと違う。 Tcl_CreateInterp()でinterpを作った後、 Tcl_SetStdChannel(channel, TCL_STDOUT); Tcl_SetStdChannel(channel, TCL_STDERR); を呼び出すことでinterpが呼び出すputsコマンドによる標準出力、エラー出力をトラップできることは確認できている。 だがTcl_Eval()やその他のTcl変数を直接いじるAPIを呼び出したときの文法エラー、実行時エラーは出力されないみたいなんだ。 (で、Resultの中に入っている) こいつを、他と同じようにトラップできればいいんだが……。
302 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 11:44:58 ] >>297 >>299 www.tcl.tk/doc/howto/thread_model.html
303 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 14:59:25 ] >>301 TCL_ERRORだったらResultを出力すればいいだけじゃね?
304 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 22:13:52 ] >>298 なんでそんなことそをする必要があるかもう少し詳しく書いた方がいいぞ。そうしないと、 >>303 みたいにすりゃいいだろ思うんだが if (Tcl_Eval(interp, script)!=TCL_OK) { char str;int len;Tcl_Channel e=Tcl_GetStdChannel(TCL_STDERR); str=Tcl_GetStringFromObj(Tcl_GetObjResult(interp), &len); Tcl_Write(err,str,len);Tcl_Flush(interp,err); }
305 名前:304 mailto:sage [2008/07/10(木) 22:23:39 ] あー、どうでもいいけど、Tcl_WriteObjつかうと、Tcl_GetObjResultから一発で済むわ。
306 名前:本田 [2008/07/22(火) 20:12:44 ] TkSTEP 0.3b3 (Tk 4.1) NEXTSTEP(tm)-lookalike-wanabee-hack-kit for Tk Alfredo K. Kojima tkstep0.3b3.tar.gz tkstep8.0.4-2.tar.gz Alfredo Kojima en.wikipedia.org/wiki/Alfredo_Kojima Alfredo Kengi Kojima si3.inf.ufrgs.br/informa/Edicao12/entr_ago00.htm TkSTEPは、現在、開発がストップしてるけど、 windowmakerなど他の仕事で作者は有名なんだな。
307 名前:本田 [2008/07/23(水) 01:18:22 ] The Tcl IRCd www.hping.org/tclircd/ The Tcl IRCd is an IRC server written in the Tcl language. The current version is not a complete implementation of the IRC protocol but should interoperate well with most IRC clients, and allows to register, change nick, create channels, talk on a public channel or in query and so on. The program is small, less than 500 lines of code, and was written in order to be very simple to modify/extend.
308 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 04:12:37 ] string hoge とかって具合に 任意の string * コマンド(?)を追加したりはできないでしょうか。
309 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 20:37:58 ] proc stringHello {} {puts "HELLO WORLD"} set map [namespace ensemble configure string -map] dict append map hello stringHello namespace ensemble configure string -map $map string hello ただし8.5以上。 8.4のときはstringコマンドをtcl_stringなんかに名前を変えて そのうえでそれのラッパーのstringを作ったりしてた。
310 名前:デフォルトの名無しさん [2008/07/24(木) 23:57:42 ] >>269 >$$$c とか $[$[$c]] とか… puts [subst $[subst $[subst $c]]] 遅レスだが…
311 名前:デフォルトの名無しさん [2008/07/27(日) 18:35:14 ] >>269 & >>310 $$var (間接指定)について psg.com/%7Ejoem/tcl/faq.html#DoubleIndirect に丁寧な説明がある。 古い我家頁だが、今でもアクセス可能と思う。
312 名前:デフォルトの名無しさん [2008/07/29(火) 00:59:08 ] BrowseX for Windows使ってた人いない? いきなり消滅してて悲しい・・・
313 名前:デフォルトの名無しさん [2008/08/02(土) 08:48:51 ] Active Tcl やっと8.5.3になった
314 名前:デフォルトの名無しさん [2008/08/05(火) 04:33:00 ] tclコードをソース隠ぺいのため、バイナリ化または、 暗号化したいがどうすればよいでしょうか?
315 名前:デフォルトの名無しさん [2008/08/05(火) 21:26:28 ] バイナリ化(exe化)ならここに色々ある。 home.netyou.jp/22/tanida/MazeOfProgram.htm 隠ぺいのためになるかは不明.
316 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 10:37:56 ] comポートとかソケットをopenで開いてgetsした時、 相手が何も返してこないと、一生待ちつづけてしまうのですが、 タイムアウトさせたりする方法は無いですか?
317 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 07:07:15 ] >>316 Tcllibは調べた?
318 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 08:05:26 ] >>316 fconfigure -blocking fileeventで非同期に処理するのが良いと思う
319 名前:デフォルトの名無しさん [2008/08/13(水) 20:58:56 ] >>316 この手のシークエンスを記述するためにafter ms命令が用意されている
320 名前:316 [2008/08/14(木) 09:50:55 ] >>318 fileeventがまさに探していた機能です サンクスコ >>319 それは考えたけど、一度発行したgetsを取り消す術がないからダメポ
321 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 00:56:41 ] foreach {o i } [regexp -all -inline {<item>(.*?)</item>} $read] { のlsearchとかlreplaceとかで、ネストタグの抽出が簡単にできるのが良い。 perlより全然良い。日本語が問題なく使えるのが良い。簡単GUIも良い。 foreachの中のregexpが速ければもっと良い。なかなか最適化ができない。
322 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 01:10:16 ] tclの正規表現は早いほうって聞いたけどなあ・・・
323 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 02:59:06 ] Tclで書いたスクリプト自体はそれほど早く動作しないよね。 TclはJITに対応してるという記述がちらほら(wiki.tcl.tk含む)で見かけたので ソースコードを調べたら、スクリプトを内部表現に書き換えるコンパイラはあっても CPUのニーモニックに直接変換してる実装部分は見当たらなかった。 インタプリタ自体がやってることはそれほど複雑ではないので(ほとんどがコマンド自体の実装) 誰か実装してくれればいいなとは思うが、 googleのannualのフォーラムでの議題には特にあがっていないようだ。
324 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 09:13:12 ] 速くしたけりゃその部分だけCで書け そもそも コマンド 引数 引数 ... しかなくて、構文などというものもない簡易言語に期待しすぎでしょ。
325 名前:デフォルトの名無しさん [2008/08/24(日) 22:12:31 ] その理屈で言うと括弧しかなくて構文などというもののない簡易言語にも期待できないのか。 それはさておきTclでバイトコードコンパイルしてるってのだけで驚異的じゃない? Tclって意味論的には素直に考えるとevalに満ち溢れたような代物でしょ。
326 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 00:18:54 ] インタプリタ作ったり、DLLやsoを簡単にロードできたり、Cとの融合が十分考慮されてる言語なんだから、 処理速度を要求される部分はCで作った方がいいでしょ、マジで。
327 名前:デフォルトの名無しさん [2008/08/25(月) 01:11:39 ] 別にそこには反論してないよ。 それはTclのシンタクスとは直接の関係はないし、Tclが簡易言語とも思わないけど。
328 名前:デフォルトの名無しさん [2008/08/26(火) 00:03:21 ] stdinを1文字単位で扱いたいのですが・・可能ですか? Enter押すまで入力待ちになってしまいます。 機種依存が必要であればlinuxでお願いします。 proc getch {} { return [read stdin -nonewline] } 目的は簡易lessコマンド作成です。
329 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:10:49 ] >>327 tclはねぇ、ローカルスコープ切れないからちょっとプロシージャが長くなると変数がゴッチャになるのよ。 長いもの書くには向かないと思うがね。
330 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:44:05 ] zero3 [es]でeTcl使ってるんだけど・・・バージョン進むにつれてサイズでかくなりすぎ。 最新版はついに起動できなくなったwww 動的に拡張を読み込めるのがTclの利点なのに、一つの実行形式に使わない拡張までまとめないで欲しい・・・
331 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 01:37:04 ] >>329 Tclなめんな! proc block {body} { eval $body } set x 100 set y 1000 block { set x 200 upvar y y puts "value is $x $y"; # value is 200 1000 } puts "value is $x $y"; # value is 100 1000