トップページtech
981コメント378KB

●●●●TCL/TKなら俺に聞け 2●●●●

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/05/01(火) 14:52:44
【英語サイト】
プロジェクト本拠地
http://tcl.sourceforge.net/
最新版ソースコード
ftp://ftp.tcl.tk/pub/tcl/nightly-cvs/
The Tcler's Wiki
http://wiki.tcl.tk/
The comp.lang.tcl Newsgroup
http://groups.google.com/group/comp.lang.tcl/
ActiveTcl
http://www.activestate.com/products/activetcl/

【日本語サイト】
もっとTcl/Tk
http://www.interq.or.jp/japan/s-imai/tcltk/
Tcl/Tk Scripting Laboratory
http://www.geocities.jp/urano343/tcltk.html
Tcl/Tk Primer
http://mibai.tec.u-ryukyu.ac.jp/~oshiro/Doc/tcltk_primer/
Tcl 8.4.1 Manual Command Reference
http://www.freesoftnet.co.jp/tclkits/doc/TclCmdRef/tcl_contents_jp.htm
CategoryTclTk - mynote
http://reddog.s35.xrea.com/wiki/CategoryTclTk.html

【前スレ】
●●●●TCL/TKなら俺に聞け●●●●
http://pc11.2ch.net/test/read.cgi/tech/1033628416/
0177デフォルトの名無しさん2008/02/08(金) 23:19:07
よっしゃ3連休で暇な俺が8.5に最適化してやるからうpしろ。
0178デフォルトの名無しさん2008/02/09(土) 02:17:51
あれ、evalか...exprかと勝手に脳内変換してたよ
md5をPureTclで計算するのになぜevalを多用するのかよくわからないな
evalでプレコンパイルして次回からはより速くなるようにする処理のところが
8.5では相対的にオーバーヘッドが大きくなったのかもしれないな
0179デフォルトの名無しさん2008/02/09(土) 21:05:44
うpまだ?暇すぎて死にそう
0180デフォルトの名無しさん2008/02/09(土) 22:46:28
>>176
http://reddog.s35.xrea.com/wiki/index.php?Benchmark%20Tcl8.5.0%20vs%20Tcl8.4.16
ここを見た感じではevalが遅くなってるってことは
なさげに見えるけどなあ・・・。なんだろう。
0181デフォルトの名無しさん2008/02/09(土) 23:51:09
>>177,179
md5を計算する手製proc
リストはここに置いておきます。
http://home.netyou.jp/22/tanida/md5.htm

tcl ver8.4迄は正常に動作しver8.5でとち狂った。
ver8.2で動作させるとrfc1321の例題と同じ結果が得られることは確認すみ。
0182デフォルトの名無しさん2008/02/10(日) 05:19:39
できた!たしかに8.5だと3倍くらい遅くなってた。たぶん変数を
二重に展開してexprとevalのコンボで最適化が効かなくなって
しまったと推測。

直したのは基本的にそこを素直にprocにしただけ。
8.4では4倍、8.5では12倍高速化した。あと、applyを使った
ものも書いてみたけど、procの方が速かった。

http://chun.s11.xrea.com/up/img/112.zip

ていうか、ひょっとして一つのprocで完結させたかったのかな。
それならapplyだ!
0183デフォルトの名無しさん2008/02/10(日) 08:03:16
VineLinux4.2とActiveTcl8.5の環境でtktreectrlをソースからビルドしたいんだけど、
makeでつまづいてしまうんだが。

$tar xzf tktreectrl-2.2.3.tar.gz
$cd tktreectrl-2.2.3
$./configure --prefix=/opt/ActiveTcl-8.5 --enable-threads
$make
うだうだ
generic/tkTreeColumn.c:13 から include されたファイル中:
generic/tkTreeCtrl.h:13:20: tkPort.h: そのようなファイルやディレクトリはありません
generic/tkTreeCtrl.h:14:21: default.h: そのようなファイルやディレクトリはありません
generic/tkTreeCtrl.h:15:20: tclInt.h: そのようなファイルやディレクトリはありません
generic/tkTreeCtrl.h:16:19: tkInt.h: そのようなファイルやディレクトリはありません
うだうだ

tkPort.hってなんぞ?
/opt/ActiveTcl-8.5/include にそんなヘッダ入ってないんだけど・・・
0184本田2008/02/10(日) 09:05:22
>>183
http://sourceforge.net/projects/tcl/
からtcl8.5とtk8.5のソースコードをgetしろ。
0185デフォルトの名無しさん2008/02/10(日) 09:16:09
>>184
ActiveTclを使わずにtckもtkも自分でソースからビルドしたらtktreectrlも上手く入ってくれた
ありがと
0186デフォルトの名無しさん2008/02/10(日) 14:19:14
exprを多用したTclプログラムを高速化するにはとにかくexprの引数全体を { } で囲むってことを覚えておくといい。
式のコンパイル結果をキャッシュしてくれるようになるので本当にこれだけでだいぶ高速化する。
181のコードだとさらにexprコマンドを変数にいれてevalとかしちゃってるんでそこもどうにかしなきゃだけど
0187デフォルトの名無しさん2008/02/10(日) 14:23:36
あー182の改訂版だとそういうところばっちり抑えてるね。余計なコメントだったか
0188デフォルトの名無しさん2008/02/10(日) 22:14:14
184 09:05:22 >>185 09:16:09 僅か10分でソースコードをgetして確認まで完了。天晴れ!
0189デフォルトの名無しさん2008/02/10(日) 22:31:43
>>188
まぁ俺様のスパコンなら余裕よ

じゃなくて、同じ事考えててソースから入れたら上手く行って「ヤッター」って書き込もうとしたらレスが付いてたの。
そんだけ。
0190本田2008/02/11(月) 12:39:59
Welcome to the Tcl Developer Xchange!
http://www.tcl.tk/
Latest Software Releases

Tcl/Tk 8.5.1 Feb 5, 2008
Tcl/Tk 8.4.18 Feb 8, 2008

ActiveTcl 8.5.1.0 Feb, 2008
0191デフォルトの名無しさん2008/02/15(金) 19:14:58
181>どうやら8.5版ではevalの処理が今一歩か。
evalはtclのインタープレタ(解釈実行)機能を利用する窓口なのでevalを封印する様では暫く8.4版に留まって様子を見るのも有力な選択肢かもしれない。
0192デフォルトの名無しさん2008/02/15(金) 23:04:55
俺は8.4の頃からバイトコンパイルの邪魔になるので
evalは封印してきたわけだが・・・。
0193デフォルトの名無しさん2008/02/15(金) 23:09:55
そういえば8.5で{*}が追加されたけどこれもeval使うよりは速いのかなー。
0194デフォルトの名無しさん2008/02/16(土) 07:42:19
>192 :バイトコンパイルの邪魔になるのでevalは封印・・・。 
     →eval命令のコンパイルで何か支障があるのですか?
0195デフォルトの名無しさん2008/02/16(土) 16:20:43
すみません。教えてください。
set a 3
set b {$a + 2}
expr $b*4
これが 20 でなく 11 になる理由は分かりました。しかし、次のような C 言語のソースをそのまま Tcl に直すとどうなるのですか?
int a = 3;
int b = a + 2;
int c = b * 4;
0196デフォルトの名無しさん2008/02/16(土) 18:05:43
set a 3
set b [expr $a + 2]
set c [expr $b * 4]
0197デフォルトの名無しさん2008/02/16(土) 21:40:46
なるほど。ありがとうございました。
0198デフォルトの名無しさん2008/02/22(金) 21:40:37
書籍の類が姿を消して久しいが今日丸善本店に立寄るとEffective Tcl/Tkが書棚にあった。手にとって奥付を見ると「1999年8月1日初版発行」になっている!?今年は平成廿年。
0199本田2008/02/23(土) 07:19:41
>>198
>Effective Tcl/Tk Library
http://sourceforge.net/projects/efftcl/
>Souce code from the book "Effective Tcl/Tk Programming"
0200デフォルトの名無しさん2008/02/28(木) 23:15:28
三浦カズヨシ逮捕されたな
関係ないけど
0201デフォルトの名無しさん2008/02/29(金) 00:01:03
美しいクンニ日本
今日本のクンニが乱れている!!
http://www.youtube.com/watch?v=pAEaGlmwZZQ
0202デフォルトの名無しさん2008/02/29(金) 11:17:41
wish83 hoge.tcl
とかでソースを実行するときにエラーがあると,ダイアログが出てOKボタンを押さないと次に進まなくなるけど,
これを抑制する方法はない?
0203デフォルトの名無しさん2008/02/29(金) 23:15:30
普通に考えて例えばファイルオープンでしくじったら
読み取りの次の処理も失敗するだろ。止まるのが
普通なのではないだろうか。エラーを「抑制」するとは
この場合はどういう処理を期待してるのだろうか。
0204デフォルトの名無しさん2008/03/01(土) 11:24:06
まあcatchしてエラー処理をすればよいのではないかな。
02052022008/03/01(土) 11:28:23
>>203
ダイアログを出さずに落っこちてほしいのです.
バッチ処理でデータを自動的に次々処理しているときに,ダイアログが出てそこで止まってしまうと,
オペレータが常時監視してOKボタンを押さなくてはいけない.
そうではなくて,エラーが出たらそのまま落ちて,次のデータに処理が移るようにしたい.
0206デフォルトの名無しさん2008/03/01(土) 11:29:12
余談だけど前にどっかの英語のブログでプログラミング関連のフォーラムのスクリーンキャプチャ画像があって、
PHP のフォーラムと Python のフォーラムの最新の質問がそれぞれ
How to hide error messages? と How to handle exceptions? だったっていうのが面白かった。
02072022008/03/01(土) 11:30:59
>>204
確かにそうですね.ありがとうございます.
0208デフォルトの名無しさん2008/03/01(土) 11:31:07
>>205
wishじゃなくtclshを使うのではどうか?
02092022008/03/01(土) 11:44:18
>>208
それが,処理自体はバッチ的なんだが,過去の経緯を引きずっている関係から,
部分的にGUIパッケージを使っているんですよね….
どういう方法をとるにしろ,プログラムにある程度の修正を加えるしかなさそうですね.
0210デフォルトの名無しさん2008/03/01(土) 11:59:26
んー、冒頭に package require Tk ってつければいいだけでは?
というかバッチの中で呼ぶのだったら wish だと同期的にならないのでいろいろ不都合じゃないの。

Tclの中でのエラー処理の必要がなくて落っこちればそれでいいっていう前提で話してるけど。
0211デフォルトの名無しさん2008/03/01(土) 12:12:15
>>205
なんだそういうことか。それならbgerrorでエラー処理を変えればいい。
でも、ていうか8.3ってbgerrorあったっけ。昔過ぎて忘れた。

proc bgerror {message} {
exit 1
}

pack [button .b -text GENERROR -width 15]
.b configure -command {
read $notexists
}
0212デフォルトの名無しさん2008/03/07(金) 10:24:47
(・∀・)チックルチーコ! チックルチーコ! ラッキーペア!

tcl tcl tcl tcl tcl tcl チャチャチャ
二人は双子♪ 似てない双子♪
0213本田2008/03/08(土) 08:39:49
>>166
Perl/Tk Tools
http://ptktools.sourceforge.net/
0214本田2008/03/08(土) 08:44:33
ActiveTcl 8.4.18.0
http://www.activestate.com/store/download.aspx?prdGUID=f0cd6399-fefb-466e-ba17-220dcd6f4078
0215デフォルトの名無しさん2008/03/08(土) 08:46:19
PowerShellから使えんのかなぁ
0216本田2008/03/08(土) 09:15:21
>>215
tcom
http://wiki.tcl.tk/1821
0217本田2008/03/08(土) 09:32:54
>>216
COM Object Implementation in Tcl
http://www.vex.net/~cthuang/tcom/server.html
http://www.vex.net/~cthuang/tcom/
0218本田2008/03/08(土) 09:35:20
>>217
>COMプログラマの解説書
>Crispin Goswell
>Microsoft Office Product Unit
>1995年 春
>1995年9月13日改訂
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdncomp/htm/com_co.asp
>抄録
>この解説書は、
>Microsoft(r) OLE Component Object Model(COM)オブジェクトを作成し、
>効果的に使用する方法を説明しています。
>例文はほとんどCで書かれていますので、実際に何が行われているかが、大変分かりやすく示されています。
>プログラマの中には、オブジェクトを実行するためにC++を好んで使用する人もいるでしょう。
>C++プログラマの観点からCOMの概念および基本的な使用法を論じているのは
>Kraig Brockschmidt著のInside OLE (第2版)(MSDN Library(Books))です。
>COMとは何か、またその設計や哲学の後ろにある動機付けをより理解する事に興味がある読者なら、
>Component Object Model Specification(MSDN Library(Specifications))の最初の2章を読んでください。
>第1章には簡単なイントロダクションを、第2章では徹底的に概要を解説してあります。
>この解説書ではInside OLEとCOM Specificationにある情報を、
>COMオブジェクトを実装する良い方法をいくつか示しながら解説するようにしてあります。
0219デフォルトの名無しさん2008/03/08(土) 10:58:39
Tcl使ってる人はLISPも使ってることが多いんでしょうか
0220本田2008/03/08(土) 11:22:01
>>219
特別関係は深くないと思う。
ただTKの方は、色々な言語から使える。
0221本田2008/03/08(土) 11:24:10
LTK - The Lisp Toolkit
"The easy way to do Lisp GUI programming"
http://www.peter-herth.de/ltk/
>LTK is a Common Lisp binding for the Tk graphics toolkit.
> It does not require any Tk knowledge for its usage.
> As it is written in pure Lisp, it is highly portable.
0222デフォルトの名無しさん2008/03/08(土) 11:29:39
DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね
DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね
DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね
DQN男の家族死ね DQN男の親死ね DQN男の友達死ね DQN男の親戚死ね
0223デフォルトの名無しさん2008/03/08(土) 12:43:06
Lisp使いでEmacs使いの人はTclに間違った偏見を持っていることがあるかも。
0224本田2008/03/08(土) 13:03:45
>>223
なぜ Tcl を使うべきではないのか
http://www.os-omicron.org/~takano/private/trans/tcl_j.html
0225本田2008/03/08(土) 13:10:51
>>224
Tcl7.x時代の話でTcl8.xにはもう当てはまらない議論。
0226デフォルトの名無しさん2008/03/08(土) 13:35:14
http://www.geocities.jp/tor_park/Dlang/byte.html
0227本田2008/03/14(金) 22:01:12
tBuild
http://sourceforge.net/projects/tbuild/
tBuild is a cross-platform Tcl/Tk extension that extends Tcl/Tk with the ability to compile
& link shared libraries of Tcl extensions written in C/C++.
tBuild currently supports all unix compilers & MS VC++ 5.x/6.x/7.0/7.1/.NET under windows.
No Mac supp
0228本田2008/03/16(日) 01:19:13
Tcl9
http://sourceforge.net/projects/tcl9/
Tcl9 is an umbrella for all projects related to the improvement of the current Tcl language,
towards the hypothetical version 9 (current version is 8.5).
0229本田2008/04/02(水) 18:18:34
>Tcl/Tk 8.5.2 Release Announcement
>March 28, 2008
http://www.tcl.tk/software/tcltk/8.5.html
0230デフォルトの名無しさん2008/04/03(木) 15:17:36
-e 位使えるようにしてくれ
0231本田2008/04/06(日) 12:46:05
>>229
>tcltk8.5.2-014-20080405.exe
http://sourceforge.net/project/showfiles.php?group_id=204414&package_id=248905&release_id=589844
0232gth2008/04/06(日) 14:25:37
アイム
出口
0233七つの海の2008/04/10(木) 23:24:00
×テックルティーケー
○ティコティケェィーィエ
0234デフォルトの名無しさん2008/04/13(日) 03:08:28
x86-32bit Linuxでは正常に動いてたプログラムをx86-64bit Linuxで
動かそうとしたらcannot execute binaryとなってダメなんですけど、
どうすればいいんですか?原因はなんなんですか?
中学生にも分かるように説明してくれませんか?
0235本田2008/04/14(月) 06:00:48
>ActiveTcl 8.5.2.0 Apr, 2008
http://www.tcl.tk/
0236本田2008/04/14(月) 06:02:18
>>234
サポートセンターに電話すべし。
0237デフォルトの名無しさん2008/04/16(水) 04:48:20
>>234ですが自己解決しました。
libc6-i386というのをインストールしたら64ビットOSでも
動きました。でも、32ビットOSのときよりも動きが遅いです。
0238本田2008/04/22(火) 08:24:49
http://snackamp.sourceforge.net/
>SnackAmp
http://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
0239デフォルトの名無しさん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 )

このような"の入った文字列を処理するにはどうしたらよいのでしょうか?
0240デフォルトの名無しさん2008/05/02(金) 20:11:53
クォートをエスケすりゃいんじゃね
gets $ch line
regsub -all \" $line \\" buf
puts [lindex $buf 0]
02412392008/05/02(金) 20:56:37
自己解決…って>>240さんの書かれた通りです。
あ、自分のは -all 忘れてましたわ。
ありがとうございます。

ちなみに、\\"で動くのですが、それだとemacsの色付けが異常になるので\\\"にしました。
0242デフォルトの名無しさん2008/05/05(月) 18:25:21
使い勝手悪い言語だなあ。
0243デフォルトの名無しさん2008/05/06(火) 10:44:47
Active Tcl ver.8.4.19に改版されている。
ver.8.4.17以降2ヶ月毎に改版されている。随分頻繁に改版しているけど、どこが換わっているのやら。
0244デフォルトの名無しさん2008/05/08(木) 16:18:48
>>242
regularExpressionの速さはピカ一ですが
0245デフォルトの名無しさん2008/05/08(木) 20:01:20
そうなの?
0246デフォルトの名無しさん2008/05/09(金) 04:16:30
コーディングにかかる時間とか、バグのとりやすさのほうが重要だろ。
この観点から見るとtclひどすぎ。
正規表現使う構文にしてもすっきりしてないし。
0247デフォルトの名無しさん2008/05/09(金) 12:00:11
わかったからすきなの使いなよ。
0248デフォルトの名無しさん2008/05/09(金) 12:42:24
まさに正論
0249デフォルトの名無しさん2008/05/14(水) 08:49:38
例に Perl/Tk 使ってみ。
Tcl ってよー出来てるって思えるから。
0250デフォルトの名無しさん2008/05/14(水) 13:17:13
Tkを使う為の言語としては最強だよな。
他がちょっと弱いけど。
0251デフォルトの名無しさん2008/05/14(水) 13:44:24
Cと組み合わせれば良いじゃん。
0252デフォルトの名無しさん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がうまくいかないです。何故でしょう?
0253デフォルトの名無しさん2008/05/17(土) 04:37:43
239みたいな例に対応できる汎用的方法がよく分からない。
'"'だけでなく'{'とか'}'とかも気をつける必要がある気がするんだけど。
tcl faq list eval とかで検索してみたけど結局どうすれば。
0254デフォルトの名無しさん2008/05/18(日) 17:33:48
複数行にわたって書いているリストの中で
コメントをなんとか書けないものかなあ
0255本田2008/05/22(木) 06:02:40
>exp_spawn failed on Windows 2003 with DEP(DataExecutionPrevention)
http://lists.activestate.com/expect%40listserv.ActiveState.com/6A3BD65D48E1EC45AF1B466D4E2A470F02630419%40HQSX5711.Hospira.corp
0256デフォルトの名無しさん2008/05/23(金) 08:27:47
tclshでプロンプト(PS1)の設定は出来ますか?
0257デフォルトの名無しさん2008/05/23(金) 21:06:59
こうじゃね?
たとえば、
set tcl_prompt1 {puts -nonewline [info hostname]@[pwd]> }
で、ラインコンティニュー用は tcl_prompt2に設定
set tcl_prompt2 {puts -nonewline continue?> }
0258デフォルトの名無しさん2008/05/24(土) 00:50:15
>>257
なんやこれ。こんなんできたのか。長年使ってるけどはじめて知ったわ
0259デフォルトの名無しさん2008/05/24(土) 01:27:29
>>257
出来た!
ありがとうございます
0260デフォルトの名無しさん2008/05/25(日) 04:51:53
aliasの設定なんか無理かな?
~/.tclshに ls color=auto を入れたいんだけど
0261本田2008/05/25(日) 06:00:16
>C++/Tcl
http://cpptcl.sourceforge.net/
>A C++ library for interoperability between C++ and Tcl

>C++/Tk
http://cpptk.sourceforge.net/
>A complete C++ interface to the Tk GUI toolkit
0262デフォルトの名無しさん2008/05/29(木) 20:12:22
Tcl/Tk 8.5でBLT-2.4z使えてる方はいらっしゃいますか?

パッチとか修正とか、かなり手を入れないと使えないのでしょうか。
0263デフォルトの名無しさん2008/06/02(月) 21:39:25
>>239
ここにその議論がある。http://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作成のガイドラインから外れた古い作りになっているんだろう。
実際何年も更新されてないようだし。
自前ビルドしてやるしか。
02642622008/06/03(火) 11:42:06
>>263
http://jos.decoster.googlepages.com/bltfortk8.5.2
を基に試してみました。

demosやexamplesの一部 (多く?) が失敗するけど、なんとなく使えそうです。
BLT-3.0で対応するのかなぁ。
0265デフォルトの名無しさん2008/06/14(土) 18:22:11
http://reddog.s35.xrea.com/wiki/A%20Stub-enabled%20BLT2.4z%20for%20Windows.html
これは試した?
02662622008/06/16(月) 16:43:53
後出しでごめんなさい。Linuxです。
Fedora 9で試してまして、そうこうしてるうちに、>>263の方法で対応したパッケージがリリースされました。

https://bugzilla.redhat.com/show_bug.cgi?id=446862
で対処してくださったようです。
0267デフォルトの名無しさん2008/06/20(金) 19:54:08
tk でコンボボックスの幅を指定するにはどうすればいいでしょうか?
また、できれば選択した文字列が表示されるテキストボックス部分を
複数行表示にしたいのですが、可能でしょうか?
0268デフォルトの名無しさん2008/06/20(金) 21:03:00
>>tk でコンボボックス
tile拡張のttk::comboboxのやつか?
ttk::combobox .cb -width 100 とかでいけんじゃね
>>複数行表示にしたいのですが、可能でしょうか?
不可能じゃね
0269デフォルトの名無しさん2008/06/27(金) 03:20:15
質問があります。

set a hoge
set b a
set c b

とやって、cからたどってhogeに辿り着くには
どうすればいいのでしょうか。
$$$c とか $[$[$c]] とかいろいろやってみたのですが
できません……。
0270デフォルトの名無しさん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]]
0271デフォルトの名無しさん2008/06/27(金) 23:22:33
>>269
puts [set [set $c]]
>>267
2行は無理。BWidgetsのコンボを改造すればできるかも
0272デフォルトの名無しさん2008/06/28(土) 00:44:17
>>271
へ〜、setって変数の参照にも使えるんだ。 勉強になりますた。
0273デフォルトの名無しさん2008/06/28(土) 03:31:47
>>263
> ただし連続する空白文字に対する動作が意図と異なるかもしれない。

この制約がどうにも辛いです。
連続した空白があってもそれをただ一つの区切りとみなしつつ、
安全にファイルなどから読み込んだ文字列を処理するには
どうしたらいいのだろうか。
02742692008/06/28(土) 04:50:38
>>270
>>271
ありがとうございます。
0275デフォルトの名無しさん2008/06/28(土) 06:01:58
>>273
そんなの教わったregsub使えよ
while {[gets $ch line] >= 0} {
puts [lindex [split $line [regsub -all -- {\s+} $line { }]] 0]
}
0276デフォルトの名無しさん2008/06/28(土) 12:50:19
>>273
set line {He said "I am}
foreach word [string map {\" \\"} $line] {
puts $word
}
■ このスレッドは過去ログ倉庫に格納されています