2008/08/29(金) [n年前の日記]
#1 [iappli] Perlスクリプトの作成でハマってたり
ガイド画面用のテキストデータファイルを出力するために、元テキストファイルからiアプリで読み込める形にするためのPerlスクリプトを作成してるのだけど。sjisとutf8の扱いで悩んだり。
文字列を文字数で切り出したりするためには、内部的にutf8フラグを立てた状態で文字列を扱うといいらしいのだけど。そうすると正規表現部分をどう書けばいいのか…。
Perlスクリプト自体をutf8で書けば正規表現部分も「if ( /^[。、]+/ ) { } 」と書けてしまうけど。そうすると今度は、Pod::Usage でスクリプトのヘルプを表示しようとしたときに文字化けしてしまう。いや、podがutf8で書かれてるのに、コマンドプロンプトはsjisだから、文字化けするのだろうけど。自分は物忘れが激しいので、--help で何のスクリプトかぐらいは表示してくれないと困るわけで。コマンドプロンプト上で chcp 65001 と打ってutf8モードにすると、今度は pod が一切表示されない。うーん。
ひとまず、Perlスクリプトをsjisで記述。すると今度は、正規表現部分をどう書けばいいのかが…。とりあえず、
文字列を文字数で切り出したりするためには、内部的にutf8フラグを立てた状態で文字列を扱うといいらしいのだけど。そうすると正規表現部分をどう書けばいいのか…。
Perlスクリプト自体をutf8で書けば正規表現部分も「if ( /^[。、]+/ ) { } 」と書けてしまうけど。そうすると今度は、Pod::Usage でスクリプトのヘルプを表示しようとしたときに文字化けしてしまう。いや、podがutf8で書かれてるのに、コマンドプロンプトはsjisだから、文字化けするのだろうけど。自分は物忘れが激しいので、--help で何のスクリプトかぐらいは表示してくれないと困るわけで。コマンドプロンプト上で chcp 65001 と打ってutf8モードにすると、今度は pod が一切表示されない。うーん。
ひとまず、Perlスクリプトをsjisで記述。すると今度は、正規表現部分をどう書けばいいのかが…。とりあえず、
my $t = decode('shiftjis', '。、'); ... if ( /^([$t]+)(.*)$/ ) { };と書いてみたけど。これで合ってるんだろうか…。
◎ ガイド画面は一応できた。 :
テキストだけならまだ簡単だけど、画像が入ってくると途端に面倒になるなと。しかしこれでもまだ、処理しやすいフォーマットでテキストデータを用意してるわけで。いわゆるWebブラウザが処理しているような、htmlやcssの解析かつ画像を含めたレンダリングとなったら、一体どれだけ複雑になることやら。想像しただけでゾッとする。が、ちょっと面白そうでもある。
[ ツッコむ ]
以上です。