こんにちは、山本です。
"藤岡和夫 <kazuf@...>"さんは書きました:
> > <script language="PerlScript">
> > $window->document->write( 'Hello' )
> > </script>
>
> これは、";"が抜けているのでエラーになりますね。
この行以降にPerlのスクリプトやPerlScriptの<script>タグが無ければ
エラーにならないはずです。perlsynなどでは一部例外を除いてsemicolonは
必須と説明されていますけど。
> 山本さんが掲示板でActviePerl5.8でもPerlScriptにまだ日本語が書けないと
> 書かれていましたが、こうすれば動きますね。少なくともIEでは・・・
>
> <html>
> <body>
> <script language="PerlScript">
> use encoding "shiftjis", Filter=>1;
> use utf8;
> use encoding 'shiftjis';
> $window->document->write( 'Hello<br>' );
> $window->document->write( 'ハロー<br>' );
> </script>
> </body>
> </html>
IEをabendさせるには「ハロー」程度では短すぎます。
もっとたくさん全角日本語文字を記述しないとダメです。
それから上記スクリプトは「use encoding」行と「use utf8」行が
無くても動作します。
> ArrangeNoteで試しましたがだめですね(;_;)
逆に、ArranegNoteで正常に全角文字入りのPerlScriptを
動作させるのであれば、こうすれば動くようになります。
$ANScript->Message( "こんにちは、世界。" );
__END__
++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++
:
padding用に何行か記述する
:
++++++++++++++++++++++++++++++++++++++++++++
ActivePerl build500番台の頃、Visual C++のデバッガで追いかけたことが
ありますが、MBCS文字列が含まれているPerlScriptのスクリプトを実行すると
動作不安定になるのは、PerlSE.dllの中で割り当てられるバッファが不足して
いて、2バイト文字の数だけバッファオーバーランしていたように
見えました。build800番台のActivePerl5.8も同じような症状が見受けられます。
TclScriptは、Tcl外部のUnicode(UTF-16?)とTcl内部のUTF-8の相互変換が
ちゃんと作り込まれているので、全角日本語も維持列が含まれていても
正常に動作できます。なお、スクリプトを記述するときの文字コードは
cp932でもUnicodeでも構いません。(ArrangeNoteはcp932のみですが。)
それから、うちのマシンではTclScriptが安定してabendしなくなりました。
開発中はいつもWindows2000の「休止状態」でシステムを止めていましたが、
一度「シャットダウン」して以来、TclScriptは一度もabendしていません。
日本語を使うのであれば、PerlScriptよりTclScriptを使ってみてください。
--
Koichi Yamamoto,
http://homepage3.nifty.com/yamakox/