======================================================================
 mb Cheat Sheet                                        [VI] Tiếng Việt
======================================================================

[ 1. Load ]
  use mb;
  # Tiếng Việt: mô-đun mb cho xử lý chuỗi theo ký tự
  mb::set_script_encoding('utf8'); # utf8 / sjis / eucjp / big5 / gbk / uhc

[ 2. Character-oriented length / substr ]
  mb::length($str)              # number of characters (not bytes)
  mb::substr($str, $pos, $len)  # substring by character position
  mb::substr($str, $pos, $len, $replacement)

[ 3. Search ]
  mb::index($str, $sub)         # character-position index
  mb::index($str, $sub, $pos)   # search from $pos
  mb::rindex($str, $sub)        # right-side search
  mb::index_byte($str, $sub)    # byte-position index (JPerl semantics)
  mb::rindex_byte($str, $sub)

[ 4. Character conversion ]
  mb::uc($str)                  # uppercase
  mb::lc($str)                  # lowercase
  mb::ucfirst($str)             # capitalize first char
  mb::lcfirst($str)

[ 5. Character code ]
  mb::ord($str)                 # codepoint of first character
  mb::chr($n)                   # character from codepoint

[ 6. Other string operations ]
  mb::chop($str)                # remove last character
  mb::reverse(@list)            # reverse characters or list
  mb::getc(FH)                  # read one character from filehandle
  mb::tr($str, $from, $to)      # transliterate characters

[ 7. Supported encodings ]
  utf8  sjis  eucjp  big5  big5hkscs  gbk  uhc  gb18030  rfc2279  wtf8

[ 8. Example ]
  use mb;
  mb::set_script_encoding('utf8');
  my $s = "Hello World";
  printf "length=%d\n", mb::length($s);    # character count
  printf "sub=%s\n",    mb::substr($s,0,5); # "Hello"
  printf "pos=%d\n",    mb::index($s,"World"); # 6

[ 9. Biểu thức chính quy điểm mã lúc chạy (mb::qr) ]
  use mb qw(*mb utf8);
  $str =~ mb::qr(qr/./)         # "." khớp một điểm mã
  $str =~ m{\G$mb{qr/(.)/}gc}   # tương đương dạng tie

[ 10. Kiểm tra byte hợp lệ (mb::valid) ]
  mb::valid($octets)            # hợp lệ trả 1, không thì 0
                                # nghiêm ngặt, tùy chọn; thay đổi theo mã hóa

[ 11. Tách theo điểm mã (mb::split) ]
  @f = mb::split(qr/,/, $csv)   # tách tại ranh giới điểm mã

[ 12. Ba cách chạy (filter / modulino / runtime) ]
  use mb;                       # đường 1: bộ lọc nguồn (perl 5.8+)
  perl mb.pm script.pl          # đường 2: modulino
  use mb qw(*mb utf8);          # đường 3: giao diện lúc chạy
