======================================================================
 mb Cheat Sheet                                            [JA] 日本語
======================================================================

[ 1. ロード ]
  use mb;
  mb::set_script_encoding('utf8'); # utf8 / sjis / eucjp / big5 / gbk / uhc

[ 2. 文字単位の length / substr ]
  mb::length($str)              # 文字数（バイト数ではない）
  mb::substr($str, $pos, $len)  # 文字位置でのサブストリング
  mb::substr($str, $pos, $len, $replacement)

[ 3. 文字列検索 ]
  mb::index($str, $sub)         # 文字位置インデックス
  mb::index($str, $sub, $pos)   # $pos から検索
  mb::rindex($str, $sub)        # 右からの検索
  mb::index_byte($str, $sub)    # バイト位置インデックス（JPerl互換）
  mb::rindex_byte($str, $sub)

[ 4. 文字変換 ]
  mb::uc($str)                  # 大文字化
  mb::lc($str)                  # 小文字化
  mb::ucfirst($str)             # 先頭文字を大文字化
  mb::lcfirst($str)

[ 5. 文字コード ]
  mb::ord($str)                 # 先頭文字のコードポイント
  mb::chr($n)                   # コードポイントから文字

[ 6. その他の文字列操作 ]
  mb::chop($str)                # 末尾文字を削除
  mb::reverse(@list)            # 文字列または配列を逆順に
  mb::getc(FH)                  # ファイルハンドルから1文字読み込み
  mb::tr($str, $from, $to)      # 文字の置換（tr/y の多バイト版）

[ 7. サポートエンコーディング ]
  utf8  sjis  eucjp  big5  big5hkscs  gbk  uhc  gb18030  rfc2279  wtf8

[ 8. 使用例 ]
  use mb;
  mb::set_script_encoding('utf8');
  my $s = "こんにちは世界";
  printf "文字数=%d\n", mb::length($s);     # 7
  printf "部分文字列=%s\n", mb::substr($s,0,5); # "こんにちは"
  printf "位置=%d\n", mb::index($s,"世界");  # 5

[ 9. 実行時コードポイント正規表現 (mb::qr) ]
  use mb qw(*mb utf8);
  $str =~ mb::qr(qr/./)         # "." が1コードポイントに一致
  $str =~ m{\G$mb{qr/(.)/}gc}   # tie 形式と等価

[ 10. 整形式バイトの検証 (mb::valid) ]
  mb::valid($octets)            # 整形式なら1、不正なら0
                                # 厳格・オプトイン。エンコーディング依存

[ 11. コードポイント単位の分割 (mb::split) ]
  @f = mb::split(qr/,/, $csv)   # コードポイント境界で分割

[ 12. 実行する3つの方法 (filter / modulino / runtime) ]
  use mb;                       # 経路1: ソースフィルタ (perl 5.8+)
  perl mb.pm script.pl          # 経路2: modulino
  use mb qw(*mb utf8);          # 経路3: ランタイムインターフェース
