作者: Koichi Yamamoto
日時: 2003/1/16(01:09)
こんにちは、山本です。

ちょっと上級者向け(?)の話題です。

Windows上でPerlやPythonなどのスクリプト言語を使っている人の中には
これらの言語を使ってInternet ExplorerやInternet Information Service
などのスクリプトを書くことができることを知っている人もいると思います。

<script language="PerlScript">
$window->document->write( 'Hello' )
</script>

Microsoftではこのスクリプト言語に関する技術をActiveX Scriptingとか
Active ScriptingとかWindows Scriptとか呼んでいますが、実はTclでも
同じような試みがこっそりと行われていたことを最近知りました。
ActiveStateのActiveTclをインストールすると、libディレクトリの中に
「TclScript」というディレクトリがあります。この中にActiveX Scripting
Engineの実装が入っています。TclScript\register.tclを実行すると、
language="TclScript"が使えるようになります。

<script language="TclScript">
document write こんにちは
</script>

ただ、ActiveTcl8.4.1.0(2002/10/24に公開されていたもの)に入っている
TclScriptはpre alpha版のため、IISでは動作しなかったり、packageコマンド
が正常に機能しなかったりと不具合が多々あります。そこで、昨年の大晦日の
夜から私なりに再実装に挑戦していましたが、どうにかIISでも動作するものが
出来たみたいですので、山本版TclScriptの実装を自分のサイトで公開します。
# 出来たといってもIEがよく異常終了している段階ですが(--;

IISのASP(Active Server Page)をTclで書くとこんな感じです。
VBScriptやJavaScriptでASPを書いている人には奇妙に見えるでしょうか? (^^;
---------------------------------------------------------------------------
<%@ language = "TclScript" %>
<html>
<head>
<title>TclScript動作確認ASPプログラム</title>
</head>
<body bgcolor="#cceeff">
<p><%
if [interp issafe] {
    Response Write Safeインタープリタで動作しています。<br>\n
} else {
    Response Write Safeインタープリタではありません。<br>\n
}
%></p>
<p>
<% set time [clock seconds] %>
今日は<b><font color="green">
<% Response Write [clock format $time -format %Y年%m月%d日] %>
</font></b>です。<br>
時刻は<b><font color="blue">
<% Response Write [clock format $time -format {%I:%M:%S %p}] %>
</font></b>です。<br>
</p>
<p>コマンドの一覧:<br>
<table border>
<%
foreach {c1 c2 c3 c4 c5} [lsort [info commands]] {
    Response Write \
        <tr><td>$c1</td><td>$c2</td><td>$c3</td><td>$c4</td><td>$c5</td></tr>\n
}
%>
</table>
</p>
</body>
</html>
---------------------------------------------------------------------------

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