[[Perl]] | [[install_japerl_Framework.bat]] | [[japerl.bat]] | [[jacode.pl]] | [[Char.pm]] | [[Perl-Exactly]] | [[Strict-Perl]] | [[Modern-Open]] | [[Fake-Our]] | [[Fake-Encode]] | [[Stable-Module]] | [[SjisTk]] | [[DBD-mysqlPPrawSjis]] | [[DBD-PgPPSjis]] | [[Sjis.pm]] | [[EUCJP.pm]] | [[UTF2.pm]] &size(28){''404 Flag Not Found''}; &color(blue){ }; &color(red,yellow){楽できて普遍的な方法を探していますか?}; Sjisソフトウェアは日本語情報処理のための Perl プログラムです(JPerlのような使い心地を目指しています)。 [[JA.pm(日本語ドキュメント):http://search.cpan.org/dist/Char-Sjis/Sjis/JA.pm]] [[English Version:http://www.excite.co.jp/world/english/web/?wb_url=http%3A%2F%2Ftext.world.coocan.jp%2FTSNET%2F%3FSjis.pm&wb_lp=JAEN&wb_dis=undefined]] &size(20){''インストール方法''}; 以下のファイルを @INC に含まれるディレクトリ、例えば C:\Perl\site\lib にコピーするとインストール完了です。もちろん ppm や cpanminus を使っても大丈夫です。 -[[Sjis.pm 1.05 (ソースコードフィルタ:Sjis.pmという名前で保存):http://cpansearch.perl.org/src/INA/Char-Sjis-1.05/Sjis.pm]] -[[Esjis.pm 1.05 (ランタイムルーチン:Esjis.pmという名前で保存):http://cpansearch.perl.org/src/INA/Char-Sjis-1.05/Esjis.pm]] -[[Sjis.pm 1.08 (ソースコードフィルタ:Sjis.pmという名前で保存):http://cpansearch.perl.org/src/INA/Char-Sjis-1.08/Sjis.pm]] -[[Esjis.pm 1.08 (ランタイムルーチン:Esjis.pmという名前で保存):http://cpansearch.perl.org/src/INA/Char-Sjis-1.08/Esjis.pm]] &size(20){''使い方''}; スクリプト先頭に以下の記述をします。そうするとスクリプトをシフトJISで記述でき、正規表現をはじめとしてPerlの動作もシフトJISによる日本語文字列に対応するようになります。最近では[[japerl.bat]]を使う方法もあります。この方法だと"use Sjis;"を書かずに済むので、将来、本流に戻るときに有利かもしれません。 use Sjis; print "こんにちは、並行世界!\n"; &size(20){''Sjisソフトウェアの概要''}; -バイナリデータを扱うことで日本語文字列(※1)を扱います。 -数値、文字列、バイト列をデータ型で区別しないこれまでのPerlの長所を継承します。 -データの長さ、あるいは位置を扱う既存の関数は、''これまで通りバイト単位で''それらを扱います。 -文字単位で扱いたい場合は、このソフトウェアが提供している文字指向のサブルーチンを利用することができます。 -1つのスクリプト中のリテラル文字列はシフトJIS符号化方式に限定し、''[[UTF8フラグ]]は使いません''。 -このソフトウェアとperlインタプリタによって、アプリケーションプログラマに対して文字指向のperl処理系を提供します。 -書かれたスクリプトはバイト指向のスクリプトに変換され、perlインタプリタで実行されます。 -アプリケーションプログラム中に「''use Sjis;''」と書くだけでシフトJISリテラルを記述できるようになります。 -正規表現のリテラルもシフトJISで記述でき、その動作もシフトJISに対応します。 -DOS/Windows風のOSの場合はディレクトリ名、ファイル名を扱う関数・演算子もシフトJISに対応します。 -その他の特徴 --シフトJISそのままの値を扱うことができる --オブジェクト指向は導入していない --UNIX風のOS、DOS/Windows風のOSの場合は他に必要なモジュールがない --perl5.00503からperl5.22まで幅広く実行することができる --SjisTkモジュールと組合わせてTkモジュールをシフトJISで利用できる --MacOS上でMacJPerlの機能を実現する ※1 ここでいう文字、文字列は利用者およびperl処理系にとってのそれであって、perlインタプリタにとってはバイト列に見えています。モダンPerl用語での文字列ではありません。以降に出現する「文字」「文字列」も同様とします。 データはバイト列として扱うこともでき、文字列として扱うこともできます。 バイト列であるか文字列であるかは、UTF8フラグが決めることではなく、私たち人間 が決めることです。なぜならセマンティックスを扱うためには心が必要だからです。 心を持たないコンピュータはシンタックスしか処理することができません。 「文字を扱っている」のは、コンピュータではなく、人間です。それは最も単純な構 成の ASCII コードでさえそうです。日本語情報処理の場合(例えばシフトJISで対応 する場合など)は、1.数値の桁を増やす、2.数値の桁数が可変となることに対応する、 だけなのでこの基本的な原理は変わりません。 だから「文字列」という用語はインタプリタのためではなく、人間のためにあった方 がよいと考えます。このソフトウェアは「文字列」という用語を私たちのために取り 戻します。 つまり、私たちが文字列だと思っているものが文字列です。 Perlはグルー言語(glue language)のひとつであり、異質なものを結びつけるのを得意 としています。しかしながら、UTF8フラグを使用すると外部文字列と内部文字列の区別 ができ、その結びつけをアプリケーションプログラマが行うことになってしまいます (ツールの仕事がいつの間にかあなたの仕事に!?)。 既存の言葉の意味を変えなければならないのは、その手法が適切でないことを暗示 していると思われるのです。 &size(20){''Sjisソフトウェアの詳細''}; このソフトウェアは JPerl on the Modern Perl です。perl を JPerl のようにすることが でき、日本語をモダンに処理します。ここでいうモダンは、アプリケーションプログラマが 上方に位置する解くべき問題に注力でき、下方に位置するインタプリタの実装都合に煩わ されない、ということを意味しています。例えば文字コード変換は要件として上方に位置し、 デコードやエンコードはインタプリタの実装都合として下方に位置します。 その一方で、このソフトウェア自身の実装方法は?というとモダンPerlではなくてスタン ダードPerlです。使うひとにやさしい反面、このソフトウェアを実装・保守する方法は前 近代的、そして標準的です。橋は両岸にかからなければ、その役目を果たせないからです。 近代的なスクリプトは前近代的なインタプリタ上で実行することができません。時間を敵 と考えず、味方と捉えることができれば、過去からも未来からも支持されるソフトウェア になります。 シフトJISをそのまま処理し、かつ値が [\x80-\xFF] のオクテットは Latin-1 を表すことが ないため、もはやUTF8フラグは使用しません。 シフトJISは第2オクテットに @ [ ¥ ] ^ ‘ { | } など、ダブルクォート文字列や正規表現で特別な役割を果たす 1 オクテット文字と同じ値が 使われています。それに加えてPerlの q qq qx qw m s tr y qr は任意の文字をデリミタに できるため、クォートしたい文字の第2オクテットがデリミタの値と同じになることがありま す。このソフトウェアはそれらのオクテットの直前に chr(0x5c) を入れることでエスケー プし、本来使用したかった2オクテット文字をバイト指向の perl 上で使用できるようにしま す。なお、インターネット上には「直後」と書かれた資料もありますが、正しくは「直前」で す。そうでなければエスケープすることができません。 このエスケープ処理によって文字コードが UTF-8 に変換されることはありません。従来同様、 バイト列はすなわちオクテット列であり、かつ文字列でもあるため、オクテット列として 操作するのか文字列として操作するのかは、必要がない限りperl処理系に指示せずにすみ ます。 外部コードはそのままの値で内部コードになります。もとい、内部コードとして設計され たシフトJISを内部コードとして使用することができます。 もとよりマッピングテーブルがない仕組みなので、システムに固有な外字コードを扱う場合 でもマッピングテーブルを追加作成する必要がありません。 ファイル名、ディレクトリ名をシフトJISで取り扱っている環境においてはそれらをファイル の内容と同様に扱うことができます。これはファイルの中に記述したファイル名をそのまま perl の組込み関数や演算子に渡せることを意味しています。DOS/Windows 風の OS の場合 はパスの区切り文字として \ が使われているため、それらをうまく扱うためのルーチン も ランタイムルーチンである Esjis.pm に含まれています。 このソフトウェアが提供する環境では、文字列の長さや文字列中の文字の位置を表すときは これまで通り 1 オクテットを 1 と数えます。それにより、今までのスクリプトとこれからの スクリプトは互換性が保たれ、新旧互いにコードを貼りつけあい、実装を継承することに よって機能を継承することができます。 文字単位で数える関数は Sjis::* という名前で用意されています。例えば文字数を調べる 関数は Sjis::length です。これは言ってみれば関数名のエスケープです。 このソフトウェアはperl5.00503で書かれているため、現在jperlを利用している人でも気軽に 試すことができます。もし思っていたものと違った場合でも Sjis.pm と Esjis.pm を削除 すればアンインストール完了です。 またPurePerl?なのでXSを利用できない状況でもこのソフトウェアを利用することができます。 XSを使っていないおかげで、バイナリ互換問題に煩わされることがなく、perlインタプリタ を perl5.8, perl5.10, perl5.12, perl5.14, perl5.16, perl5.18, perl5.20, perl5.22, 64ビット版へと移行するのも容易です。 いままでに蓄積されたデータ、スクリプト、ノウハウを今後も利用できるようにし、シンプ ルな日本語情報処理モデルを提供することがこのソフトウェアの目標です。 &size(20){''このソフトウェアが使われる領域''}; -基幹システムの現状 --基幹システムは JIS C 6226-1978 または JIS X 0208-1983 を基本としており、 --実は JIS X 0208-1990 すらあまり参照されていない --基幹システムでは補助漢字(JIS X 0212-1990)は参照されていない --基幹システムでは第3水準、第4水準(JIS X 0213)は参照されていない --一方で、それらの代わりにシステム外字・私用外字が使われ続けている --基幹システムでは符号化方式が分からないものを推測して処理することはあり得ない --いわゆる"情報処理"の場においては可変幅は不便なのでプロポーショナルフォントは利用されていない -なぜシフトJISが使われるのか --従来どおり半角カナ(JIS X 0201-1969)をそのまま扱える --従来どおり文字数とバイト数の換算が容易 --従来どおりに文字と文字コード値が対応している --従来どおりバイト数と表示幅/印字幅が対応している --従来どおりのソート結果になる --従来どおり外字が簡単に扱える --文字集合の大きさが実務的にちょうどよい(大は小を''兼ねない'') --文字集合が変わると過去に量子化したデータの解釈が不定になってしまう -どうして JIS C 6226-1978 が使われ続けるのか --過去の規格に従って、作成・蓄積(エンコード)されたデジタルデータを現在の規格に従って、表示・印刷(デコード)することはできない --系の一部をひとの脳が担っており、工業規格として改正するのはそぐわない &size(20){''長さの単位が文字よりもバイトのほうがよい理由''}; -互換性 --長さの単位が変わるのは影響が大きすぎます -システム的に必要なのはバイト数 --ファイルテスト演算子 -s が返す値の単位はバイト --通信パケットの長さ --コンテンツの長さ --確保すべきメモリのサイズ --確保すべきディスクのサイズ -利用者指向なので文字の数え方は用途(アプリケーション)によって異なる --「ギャッ」は1文字(ギャッ)なのか2文字(ギャ)(ッ)なのか3文字(ギ)(ャ)(ッ)なのか4文字(キ)(゙)(ャ)(ッ)なのか --「か゜」は1文字(か゜)なのか2文字(か)(゜)なのか --「あ゛」は1文字(あ゛)なのか2文字(あ)(゛)なのか --「あ゛ーっ!」は1文字(あ゛ーっ!)なのか <中略> 5文字(あ)(゛)(ー)(っ)(!)なのか -文字といってもcodepointなのかgraphemeなのか -他のシステムに文字数を伝達する場合は、数え方について合意していなければ意味をなさない -自/他、新/旧のシステムの違いを超えて長さの単位になり得るのはバイト -※ただし1バイトは8ビットに限る このソフトウェアが想定しているスケジュール 西暦2015年 -- スクリプトはシフトJISで書かれ、外部データは複数の符号化方式が使われている use Sjis; require 'jacode.pl'; 西暦2025年 -- あまり状況が変わっていないが、Unicodeの私用面にJIS漢字を(区点順に)割当てるひと達が出現する -- そうなると4バイト固定長のほうが分かりやすいのでUTF-8でありながらNULパディングによってどの文字も4バイトで扱う技法が普及し始める -- これまでのNULの機能は4バイト版のNULNULNULNUL(通称NUL4)によって実現する -- それらによりDIS10646第1版で考えていたことが形を変えてある程度叶う use Sjis; require 'jacode2.pl'; # 'p15jis' がサポートされる 西暦2030年 -- 内部コードのはずが、いつか見た光景のように外部コードとしても使われだしてしまう -- 当事者間の私的な合意なのでそれを禁止することができない -- その一方で IVS はめったに使われず、使わないことがあたかも合意されているかのようである ※ 個人的な妄想です &size(20){''参考情報''}; -[[Sjis search.cpan.org:http://search.cpan.org/dist/Char-Sjis/]] (Perl5.5 から 5.22、64ビット版PerlでJPerlを実現) -[[Char-Sjis:http://code.activestate.com/ppm/Char-Sjis/]] (ActivePerlでJPerlを実現) -[[Perl/Sjis:http://ja.wikibooks.org/wiki/Perl/Sjis]] (ウィキブックス(Wikibooks)) -[[[Tokyo.pm] jus Benkyoukai:http://mail.pm.org/pipermail/tokyo-pm/1999-September/001854.html]] (Tokyo-pm 保存書庫) -[[Sjis ソフトウェアってなあに?:http://text.world.coocan.jp/TSNET/?TSNET%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E9%80%9A%E4%BF%A1%E7%AC%AC7%E5%8F%B7]] (TSNETスクリプト通信第7号) -[[Sjis.pmミニ入門:http://text.world.coocan.jp/TSNET/?TSNET%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E9%80%9A%E4%BF%A1%E7%AC%AC8%E5%8F%B7]] (TSNETスクリプト通信第8号) -Sjisソフトウェアファミリー --[[Latin1:http://search.cpan.org/dist/Char-Latin1/]] Latin-1 を扱うときに --[[Latin2:http://search.cpan.org/dist/Char-Latin2/]] Latin-2 を扱うときに --[[Latin3:http://search.cpan.org/dist/Char-Latin3/]] Latin-3 を扱うときに --[[Latin4:http://search.cpan.org/dist/Char-Latin4/]] Latin-4 を扱うときに --[[Latin5:http://search.cpan.org/dist/Char-Latin5/]] Latin-5 を扱うときに --[[Latin6:http://search.cpan.org/dist/Char-Latin6/]] Latin-6 を扱うときに --[[Latin7:http://search.cpan.org/dist/Char-Latin7/]] Latin-7 を扱うときに --[[Latin8:http://search.cpan.org/dist/Char-Latin8/]] Latin-8 を扱うときに --[[Latin9:http://search.cpan.org/dist/Char-Latin9/]] Latin-9 を扱うときに --[[Latin10:http://search.cpan.org/dist/Char-Latin10/]] Latin-10 を扱うときに --[[Cyrillic:http://search.cpan.org/dist/Char-Cyrillic/]] キリル文字を扱うときに --[[KOI8R:http://search.cpan.org/dist/Char-KOI8R/]] ロシア語、ブルガリア語のキリル文字を扱うときに --[[KOI8U:http://search.cpan.org/dist/Char-KOI8U/]] ウクライナ語のキリル文字を扱うときに --[[Greek:http://search.cpan.org/dist/Char-Greek/]] ギリシア文字を扱うときに --[[Arabic:http://search.cpan.org/dist/Char-Arabic/]] アラビア文字を扱うときに --[[Hebrew:http://search.cpan.org/dist/Char-Hebrew/]] ヘブライ文字を扱うときに --[[JIS8:http://search.cpan.org/dist/Char-JIS8/]] JIS8文字を扱うときに --[[TIS620:http://search.cpan.org/dist/Char-TIS620/]] タイ文字を扱うときに --[[Windows1252:http://search.cpan.org/dist/Char-Windows1252/]] Windows-1252 を扱うときに --[[Windows1258:http://search.cpan.org/dist/Char-Windows1258/]] ベトナム語向けコードを扱うときに --[[Big5HKSCS:http://search.cpan.org/dist/Char-Big5HKSCS/]] 香港のコードを扱うときに --[[Big5Plus:http://search.cpan.org/dist/Char-Big5Plus/]] 台湾のコードを扱うときに --[[EUCTW:http://search.cpan.org/dist/Char-EUCTW/]] 台湾の漢字をいっぱい扱うときに --[[EUCJP:http://search.cpan.org/dist/Char-EUCJP/]] UNIXで日本語を扱うときに --[[GB18030:http://search.cpan.org/dist/Char-GB18030/]] 中国のコードを扱うときに(4バイトコード) --[[GBK:http://search.cpan.org/dist/Char-GBK/]] 中国のコードを扱うときに(2バイトコード) --[[HP15:http://search.cpan.org/dist/Char-HP15/]] Hewlett-Packard Development Company 社の HP-15 を扱うときに --[[INFORMIXV6ALS:http://search.cpan.org/dist/Char-INFORMIXV6ALS/]] Informix V6 ALS を扱うときに --[[UHC:http://search.cpan.org/dist/Char-UHC/]] 韓国のコードを扱うときに --[[KPS9566:http://search.cpan.org/dist/Char-KPS9566/]] 北朝鮮のコードを扱うときに --[[UTF2:http://search.cpan.org/dist/Char-UTF2/]] UTF-8 を扱うときに --[[OldUTF8:http://search.cpan.org/dist/Char-OldUTF8/]] CESU-8, Modified UTF-8 を扱うときに --[[USASCII:http://search.cpan.org/dist/Char-USASCII/]] やっぱり US-ASCII を扱うときに(最も需要が高そう) -関連ソフトウェア --[[jcode.pl - Wikipedia:http://ja.wikipedia.org/wiki/Jcode.pl]] Sjisソフトウェアはjcode.plをもとに作られました --[[jacode.pl]] 文字コードの変換には jacode.pl が便利です --[[JPerl:http://www.cpan.org/src/5.0/jperl/]] JPerlとして使えることを目指しています --[[jperl (再配布):https://alaginrc.nict.go.jp/case/jperl.html]]本ページは毎日新聞'95データ集から京都大学テキストコーパス Version 3.0の生成に必要なperl 5.005_04および、そのパッチであるjperl 5.005_04-20040401を再配布するためのページです --[[Debian-3.0(woody)用 jperl パッケージ:http://namazu.org/~tsuchiya/debian/jperl/]]このディレクトリには,Debian-3.0(woody)用に作成した jperl パッケージが 保存されています. --[[Char.pm]] 文字コードに煩わされずに文字を扱いたいときに便利です --[[SjisTk]] Tk モジュールのシフトJIS版 --[[DBD-mysqlPPrawSjis]] DBD-mysqlPP のシフトJIS版 -関連情報 --[[文字情報基盤整備事業:http://mojikiban.ipa.go.jp/]] --[[JPerl Wiki --- Yet Another JPerl on Pure Perl:http://ja.jperl.wikia.com/wiki/JPerl_Wiki]] --[[山下良蔵さんのシフトJIS誕生秘話:http://shino.tumblr.com/post/116166805/1981-us-jis]] --[[シフトJIS:http://www.wdic.org/w/WDIC/%E3%82%B7%E3%83%95%E3%83%88JIS]] --[[JIS 漢字批判の基礎知識:http://www.joao-roiz.jp/mtoyo/on-JCS/mt-gene.pdf]] --[[文字コードと字形:http://wiki.osdev.info/?%CA%B8%BB%FA%A5%B3%A1%BC%A5%C9%A4%C8%BB%FA%B7%C1]] --[[モダンPerlの世界へようこそ(第31回):http://gihyo.jp/dev/serial/01/modern-perl/0031]] --[[モダンPerlの世界へようこそ(第32回):http://gihyo.jp/dev/serial/01/modern-perl/0032]] --[[モダンPerlの世界へようこそ(第33回):http://gihyo.jp/dev/serial/01/modern-perl/0033]] --[[『JPerlは偉大だった』……けれど(今はjaperl.batがあればOneEncoding/jperl.batもあります):http://d.hatena.ne.jp/charsbar/20100325/1269515216]] --[[PerlではUTF8文字列でマルチバイトなファイル名をちゃんと扱えないという話も書いておいてくださいな:http://asakura.g.hatena.ne.jp/asakura-t/20070511/1178851452]] --[[perl - utf8なファイル名:http://blog.livedoor.jp/dankogai/archives/50828554.html]] --[[Perlでマルチバイトなファイル名を扱えないというFUD:http://d.hatena.ne.jp/charsbar/20070511/1178868542]] --[[Perlの中で閉じているかそうでないかの差でしょう:http://d.hatena.ne.jp/charsbar/20070511/1178874552]] --[[どこで混乱しているのかわかりませんが:http://d.hatena.ne.jp/charsbar/20070512/1178907088]] --[[ファイル名を文字列として扱いたいってのとは話が別:http://d.hatena.ne.jp/charsbar/20070512/1178952540]] --[[PerlIO::scalar でopenできるのはバイト列だけ!:http://d.hatena.ne.jp/gfx/20130426/1366947365]] --[[perlで日本語を使うためのメモ:http://wiki.livedoor.jp/frenel2/d/perl/perl%a4%c7%c6%fc%cb%dc%b8%ec%a4%f2%bb%c8%a4%a6%a4%bf%a4%e1%a4%ce%a5%e1%a5%e2]] --[[Perl日本語を使う際の心得:http://note.chiebukuro.yahoo.co.jp/detail/n198946]] --[[perl - utf8::is_utf8("\x{ff}") == 0:http://blog.livedoor.jp/dankogai/archives/51004472.html]] --[[utf8::is_utf8 considered harmful:http://subtech.g.hatena.ne.jp/miyagawa/20080218/1203312527]] --[[utf8::is_utf8 considered harmful 再考:http://qiita.com/items/59815d8a9f7f77c44b27]] --[[Perl UTF-8 crash course:http://weblog.bulknews.net/post/59317757811/perl-utf-8-crash-course]] --[[utf8-flag considered harmful.:http://lestrrat.ldblog.jp/archives/23208332.html]] --[[UTF8フラグあれこれ:http://d.hatena.ne.jp/dayflower/20080219/1203493616]] --[[Unicode文字列は「flagged utf8」UTF-8バイト列は「flaggedじゃないutf8?」:http://d.hatena.ne.jp/lesamoureuses/20090804/1249384611]] --[[Perlの内部形式に関する考察:http://www.vividcode.info/perl/internalformat.xhtml]] --[[Do not short-circuit decode_utf8 with utf8 flags #11:https://github.com/dankogai/p5-encode/pull/11]] --[[ad-hocな人生 - TAKESAKO (仮):http://namazu.org/~takesako/diary/?date=20050908]] --[[XML::Parser を Hack して utf8 フラグ問題から解放される:http://d.hatena.ne.jp/naoya/20050930/1128056618]] --[[Compatibility is a virtue(互換性は美徳です):http://www.nntp.perl.org/group/perl.perl5.porters/2010/05/msg159825.html]] --[[Ruby on Perl(s):http://www.rubyist.net/~matz/slides/yapc2006/]] --[[Perl 5.8 and Unicode; Myths, Facts and Changes(動画):http://www.archive.org/details/YAPCAsia2006TokyoPerl58andUnicodeMythsFactsandChanges]] --[[Perl 5.8 and Unicode; Myths, Facts and Changes(音声):http://yapc.g.hatena.ne.jp/jkondo/]] --[[Encodeの覚書:http://www.rwds.net/wiki?page=Encode%A4%CE%B3%D0%BD%F1]] --[[Shift-JISテキストを正しく扱う:http://homepage1.nifty.com/nomenclator/perl/shiftjis.htm]] --[[jperlユーザーのために:http://homepage1.nifty.com/kazuf/jperl.html]] --[[Perl 5.8.1では、ShiftJISの2バイト目に含まれる\x5Cの問題は解決されている:http://www.rakunet.org/tsnet/TSperl/12/385.html]] --[[UTF-8フラグの立て方・降ろし方:http://www.rakunet.org/tsnet/TSabc/18/546.html]] --[[WindowsでPerl 5.8/5.10を使うモンじゃない:https://sites.google.com/site/hiroa63iz/perlwin]] --[[Perlish Magazine 20060401 号:http://jp.rubyist.net/PerlMa/]] --[[シフトJISを捨てられるか?(何か良いエンコーディングはないだろうか→シフトJIS+外字をおすすめします):http://itpro.nikkeibp.co.jp/article/COLUMN/20070221/262658/]] --[[マルチバイトキャラクタを扱う決定性有限状態オートマトンの構成法:http://lc.linux.or.jp/lc2001/papers/dfa-i18n-paper.pdf]] --[[国際化正規表現ライブラリの開発(文書):http://lc.linux.or.jp/lc2002/papers/hasegawa0918h.pdf]] --[[国際化正規表現ライブラリの開発(スライド):http://lc.linux.or.jp/lc2002/papers/hasegawa0918p.pdf]] --[[文字列照合方法、これを用いた文書処理装置及びプログラム:http://www.j-tokkyo.com/2003/G06F/JP2003-242179.shtml]] --[[マルチバイト文字セット用正規表現コンパイラ構成方法及びプログラム:http://patent.astamuse.com/ja/published/JP/No/2007102744]] --[[マルチバイト処理向け文字列照合用有限オートマトン生成システム:http://www.wipo.int/pctdb/ja/wo.jsp?WO=2009116646&IA=JP2009055515]] --[[O'Reilly's CD bookshelfs:http://docstore.mik.ua/orelly/bookshelf.html]] --[[Nobuhiko SATO 最新版ActivePerlをいろいろいじったがうまく日本語が処理できないので、実績のあるActivePerl 5.22とjperl 5.22を使う。:https://twitter.com/nobusato/status/6163901889]] --[[漢字小委員会(第16回)(平成27年6月26日):http://www.bunka.go.jp/seisaku/bunkashingikai/kokugo/shoiinkai/iinkai_16/]] **TODO/DONEリスト [#l1b46b68] >[[ina]] (2012-02-10 (金) 23:20:37)~ ・m??, ?? のサポート~ ・バイト指向の正規表現を実現する /b 修飾子のサポート~ >[[ina]] (2012-03-31 (土) 20:08:00)~ ・\F と fc() のサポート~ ・[[Perl 5.16 new features:http://www.effectiveperlprogramming.com/blog/1091]]~ ・[[perl5160delta:http://search.cpan.org/~abigail/perl-5.15.9/Porting/perl5160delta.pod]]~ ・[[perl-5.16 ビギナーズセッション(5分?) akiym:http://akiym.com/slides/20120418-hokkaidopm-casual0-perl-5-16/#1]]~ ・2012-05-25にバージョン0.81としてリリースしました~ >[[ina]] (2012-06-20 (水))~ ・Sjis 0.81 が Strawberry Perl 5.16.0 および ActivePerl 5.16.0 にて全テストパスしました。~ ・正規表現中の文字列クラス m/[here]/ 内に変数が記述できるようにする。~ >[[ina]] (2012-07-29 (日))~ ・Sjis 0.82 リリースしました。~ >[[ina]] (2012-08-14 (火))~ ・Sjis 0.82 が Strawberry Perl 5.16.1.1 のテストにて PASS しました。~ >[[ina]] (2012-09-13 (木))~ ・!~ と s/// を組合せて記述した場合のバグに現在対処中で、テストを進めています。~ >[[ina]] (2012-09-29 (土))~ ・Sjis 0.83 をリリースしました。~ >[[ina]] (2012-10-24 (水))~ ・${^WIN32_SLOPPY_STAT} に対応していない件をドキュメントに書く。~ ・起動時のコマンドラインパラメータをエスケープ後のスクリプト実行時に引き継ぐ部分の見直し中。~ ・ドキュメントの見直し中。~ >[[ina]] (2012-10-30 (火))~ ・ニーズが分からず実装も面倒なので、正規表現のクロイスタ(?s)(?i)をサポートせずにいます。~ (?s) は /s 修飾子と .(ドット) と \N で記述できます。~ (?i) は \F ~ \E で工夫して記述する必要があります。~ >[[ina]] (2012-11-29 (木))~ ・-Duseithreads にてコンパイルされた perl 5.17.x では m?? が正しく動作しません。[perl #115080] m?? doesn't only once match on -Duseithreads~ http://www.nntp.perl.org/group/perl.perl5.porters/2012/09/msg193258.html~ perl 5.18 までに解決されるといいのですが。~ https://rt.perl.org:443/rt3//Public/Bug/Display.html?id=115080~ 解決されました。~ >[[ina]] (2012-12-12 (水))~ ・Win32s 環境では動作しませんでした。~ ・Microsoft Windows 95 で動作確認しました(command.com に対応する箇所、一箇所の変更が必要です)。~ ・Microsoft Windows NT 4.0 で動作確認しました。~ >[[ina]] (2012-12-23 (日))~ ・Sjis::getc を作成しました。~ >[[ina]] (2013-01-27 (日))~ ・Sjis::getc(BAREWORD) のバグを修正しました。~ >[[ina]] (2013-03-22 (金))~ ・perl 5.14.4 での動作確認しました。~ ・perl 5.16.3 での動作確認しました。~ ・Win32モジュールがなくともEsjis::chdirが動作するようにしました。~ >[[ina]] (2013-05-01 (水))~ ・正規表現で32,767オクテット以上の文字列を扱えるように改良し、ver.0.88をリリースしました。~ >[[ina]] (2013-05-12 (日))~ ・ver.0.88 での改良は Perl5.10.0 では利用できないようなので、対象をPerl5.10.1以降に変更して、再度 ver.0.89 としてリリースしました。~ ・Perl 5.18.0-RC1 で全テストがPASSしました。~ ・Perl 5.18.0-RC2 で全テストがPASSしました。~ ・Perl 5.18.0-RC3 で全テストがPASSしました。~ ・Perl 5.18.0-RC4 で全テストがPASSしました。~ >[[ina]] (2013-05-19 (日))~ ・Perl 5.18.0 で全テストがPASSしました。~ >[[ina]] (2013-06-03 (月))~ ・Sjis::substr() の lvalue 対応版を作成し、リリース準備完了。~ >[[ina]] (2013-06-08 (土))~ ・ver.0.90をリリースしました。~ ・Perl 5.19.0 で全テストがPASSしました。~ ・ver.0.89での改良をsplit()関数にも適用しました。~ >[[ina]] (2013-07-07 (日))~ ・ver.0.91をリリースしました。~ >[[ina]] (2013-07-10 (水))~ ・JIS8、TIS-620、Arabic、Hebrewの作成中。~ ・MSWin32版PerlでUTF2とOldUTF8のテストがPASSしないことへの対処中。~ >[[ina]] (2013-07-18 (木))~ ・ver.0.92をリリースしました。~ >[[ina]] (2013-07-26 (金))~ ・eval "string"; の string 部分をエスケープする方法を検討中。~ >[[ina]] (2013-07-29 (月))~ ・[[ver.0.88での対応がPerl本体に反映されるならうれしいことです。:http://www.gossamer-threads.com/lists/perl/porters/296815?page=last]]~ >[[ina]] (2013-08-06 (火))~ ・Perl 5.18.1-RC1 で全テストがPASSしました。~ ・Perl 5.18.1-RC2 で全テストがPASSしました。~ >[[ina]] (2013-08-10 (土))~ ・Perl 5.18.1-RC3 で全テストがPASSしました。~ >[[ina]] (2013-08-13 (火))~ ・Perl 5.18.1 で全テストがPASSしました。~ >[[ina]] (2013-08-21 (水))~ ・StrawberryPerl 5.18.1(32ビット) で全テストがPASSしました。~ >[[ina]] (2013-09-03 (火))~ ・[[ユーザ交流の場:http://qwik.jp/sjis/.login]]を作りました。~ >[[ina]] (2013-09-27 (金))~ ・ActivePerl 5.18(32ビット実行形式) で全テストがPASSしました。~ ・ActivePerl 5.18(64ビット実行形式) で全テストがPASSしました。~ >[[ina]] (2013-12-07 (土))~ ・表面化していなかったファイルテスト演算子部分のバグの修正・テスト中。~ ・%%Win95Cmd.exeへの対応を検討中。%%Win95Cmd.exeが日本語に対応していないのでだめでした。~ ・Perl 5.18.2-RC1 で全テストがPASSしました。~ ・Perl 5.18.2-RC2 で全テストがPASSしました。~ >[[ina]] (2013-12-25 (水))~ ・Perl 5.18.2-RC3 で全テストがPASSしました。~ ・Perl 5.18.2-RC4 で全テストがPASSしました。~ ・まもなくver.0.93をリリースします。 >[[ina]] (2013-12-29 (日))~ ・ver.0.93をリリースしました。 >[[ina]] (2014-01-07 (火))~ ・Perl 5.18.2 で全テストがPASSしました。~ ・UTF2,OldUTF8の fc() をUnicode6.3に対応させ、テスト中です。~ >[[ina]] (2014-01-13 (月))~ ・ver.0.94をリリースしました。~ >[[ina]] (2014-03-31 (月))~ ・Perl5.20のsignaturesへの対応を準備する。~ >[[ina]] (2014-04-26 (土))~ ・ver.0.96をリリースしました。~ >[[ina]] (2014-05-17 (土))~ ・Perl 5.20.0-RC1 で全テストがPASSしました。~ >[[ina]] (2014-05-27 (火))~ ・Perl 5.20.0 で全テストがPASSしました。~ >[[ina]] (2014-08-27 (水))~ ・EUC-TWを作成中です。~ >[[ina]] (2014-09-01 (月))~ ・yada-yada 演算子をサポートして ver.1.00 をリリースしました。~ >[[ina]] (2014-09-18 (木))~ ・Strawberry Perl 5.20.1 で全テストがPASSしました。が、t/212_dbmopen.t にて libgdbm_compat-4_.dll、libdb-6.1_.dll、libgdbm-4_.dll のコンポーネントが見つからないというメッセージボックスが表示されました。~ >[[ina]] (2014-11-27 (木))~ ・ActivePerl 5.20.1 でテストがPASSしました。~ >[[ina]] (2014-11-30 (日))~ ・eval "string" は eval Sjis::escape("string") という方法でサポートするようにし、現在テスト中です。~ >[[ina]] (2014-12-24 (水))~ ・今のペースだとリリースは来年になりそうです。eval Sjis::escape("string") のシンタックスシュガー、Sjis::eval("string") も使えるように考えています。~ >[[ina]] (2015-01-01 (木))~ ・Sjis::eval をサポートして ver.1.02 をリリースしました(この機能を実現するのに1年半もかかりました!)。~ ・Perl 5.21.7 で全テストがPASSしました。~ >[[ina]] (2015-01-05 (月))~ ・Sjis::eval のおかげでSjisソフトウェアファミリーをひとつに統合できるのではないかと検討を始めました。~ >[[ina]] (2015-01-12 (月))~ ・統合後の名前はChar.pmにしようと考えています。続きは[[Char.pm]]で。~ >[[ina]] (2015-02-18 (水))~ ・Perl 5.20.2 で全テストがPASSしました。~ >[[ina]] (2015-03-05 (木))~ ・Strawberry Perl 5.20.2 で全テストがPASSしました。~ >[[ina]] (2015-05-04 (月))~ ・ActivePerl 5.20.2(32ビット実行形式) で全テストがPASSしました。~ ・エスケープ時の実行速度改善を予定しています。 >[[ina]] (2015-06-02 (火))~ ・Perl 5.22.0 の対応準備をしています。~ >[[ina]] (2015-06-14 (日))~ ・まもなくver.1.05をリリースします。~ >[[ina]] (2015-06-15 (月))~ ・ver.1.05をリリースしました。~ >[[ina]] (2015-06-25 (木))~ ・ダブルクォートライクの文字列、正規表現はその中に文字列を(それがダブルクォートライクであれば再帰的に)含むことができるので、それらを扱えるように計画中。 ~