======================================================================
 mb Cheat Sheet                                           [TH] ภาษาไทย
======================================================================

[ 1. โหลดโมดูล ]
  use mb;
  mb::set_script_encoding('utf8');

[ 2. length / substr ตามตัวอักษร ]
  mb::length($str)              # จำนวนตัวอักษร (ไม่ใช่ไบต์)
  mb::substr($str, $pos, $len)  # ดึงสตริงตามตำแหน่งตัวอักษร

[ 3. ค้นหาสตริง ]
  mb::index($str, $sub)         # ดัชนีตำแหน่งตัวอักษร
  mb::rindex($str, $sub)        # ค้นหาจากด้านขวา
  mb::index_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)     mb::tr($str,$from,$to)

[ 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);
  printf "ส่วน=%s\n",    mb::substr($s,0,7);

[ 9. นิพจน์ปกติระดับโค้ดพอยต์ตอนรันไทม์ (mb::qr) ]
  use mb qw(*mb utf8);
  $str =~ mb::qr(qr/./)         # "." ตรงกับหนึ่งโค้ดพอยต์
  $str =~ m{\G$mb{qr/(.)/}gc}   # เทียบเท่ารูปแบบ tie

[ 10. ตรวจสอบไบต์ที่ถูกต้อง (mb::valid) ]
  mb::valid($octets)            # ถูกต้องคืน 1 ไม่ถูกต้องคืน 0
                                # เข้มงวด เลือกใช้เอง ขึ้นกับการเข้ารหัส

[ 11. แยกตามโค้ดพอยต์ (mb::split) ]
  @f = mb::split(qr/,/, $csv)   # แยกที่ขอบเขตโค้ดพอยต์

[ 12. สามวิธีในการรัน (filter / modulino / runtime) ]
  use mb;                       # เส้นทาง 1: ตัวกรองซอร์ส (perl 5.8+)
  perl mb.pm script.pl          # เส้นทาง 2: modulino
  use mb qw(*mb utf8);          # เส้นทาง 3: อินเทอร์เฟซรันไทม์
