BEGIN { $| = 1; print "1..13\n"; } END {print "not ok 1\n" unless $loaded;} use String::Multibyte; $^W = 1; $loaded = 1; print "ok 1\n"; $mb = String::Multibyte->new({ charset => 'sjis_grapheme', regexp => '[\xB3\xB6-\xC4]\xDE|[\xCA-\xCE][\xDE\xDF]|' . '[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]', }, 1); $NG = 0; for ("漢字テスト", "abc", "アイウエオ", "パール=Perl", "\001\002\003\000\n", "", " ", ' ') { $NG++ unless $mb->islegal($_); } print !$NG ? "ok" : "not ok", " 2\n"; for ("それもそうだ\xFF\xFF", "どうにもこうにも\x81\x39", "\x91\x00", "これは\xFFどうかな") { $NG++ unless ! $mb->islegal($_); } print !$NG ? "ok" : "not ok", " 3\n"; print $mb->islegal("あ", "P", "", "カンジ test") && ! $mb->islegal("日本","さkanji","\xA0","PERL") ? "ok" : "not ok", " 4\n"; print 0 eq $mb->length("") && 3 eq $mb->length("abc") && 4 eq $mb->length("abc\n") && 5 eq $mb->length("アイウエオ") && 3 eq $mb->length("パール") && 6 eq $mb->length("ガギグゲゴヴ") && 10 eq $mb->length("あかさたなはまやらわ") && 14 eq $mb->length("あかさたな\n\nはまやらわ\n\n") && 9 eq $mb->length('AIUEO日本漢字') ? "ok" : "not ok", " 5\n"; $ref = '字漢本日オエウイアOEUIAoeuiaおえういあ'; $str = 'あいうえおaiueoAIUEOアイウエオ日本漢字'; print $ref eq $mb->strrev($str) ? "ok" : "not ok", " 6\n"; $ref = 'パールを使ってアソビマショウ'; $str = 'ウョシマビソアてっ使をルーパ'; print $ref eq $mb->strrev($str) ? "ok" : "not ok", " 7\n"; print $mb->strspn ("XZ\0Z\0Y", "\0X\0YZ") == 6 && $mb->strcspn("Perlは面白い。", "XY\0r") == 2 && $mb->strspn ("+0.12345*12", "+-.0123456789") == 8 && $mb->strcspn("Perlは面白い。", "赤青黄白黒") == 6 && $mb->strspn ("", "123") == 0 && $mb->strcspn("", "123") == 0 && $mb->strspn ("あいうえお", "") == 0 && $mb->strcspn("あいうえお", "") == 5 && $mb->strspn ("パパハペポ", "パピプペポ") == 2 && $mb->strcspn("ケサノゴハンハ", "ガギグゲゴ") == 3 && $mb->strspn ("パパハペポ", "ハヒフヘホ") == 0 && $mb->strcspn("パパハペポ", "ハヒフヘホ") == 2 && $mb->strspn ("ケサノゴハンハ", "カキクケコ") == 1 && $mb->strcspn("ケサノゴハンハ", "カキクケコ") == 0 && $mb->strspn ("", "") == 0 && $mb->strcspn("", "") == 0 ? "ok" : "not ok", " 8\n"; $str = "なんといおうか"; print 3 eq $mb->strtr(\$str,"あいうえお", "アイウエオ") && $str eq "なんとイオウか" ? "ok" : "not ok", " 9\n"; $digit_tr = $mb->trclosure( "1234567890-", "一二三四五六七八九〇−"); $frstr1 = "TEL:0124-45-6789\n"; $tostr1 = "TEL:〇一二四−四五−六七八九\n"; $frstr2 = "FAX:0124-51-5368\n"; $tostr2 = "FAX:〇一二四−五一−五三六八\n"; $restr1 = &$digit_tr($frstr1); $restr2 = &$digit_tr($frstr2); print $tostr1 eq $restr1 && $tostr2 eq $restr2 ? "ok" : "not ok", " 10\n"; print $mb->index("", "") == 0 && $mb->index("", "a") == -1 && $mb->index(" ", "") == 0 && $mb->index(" ", "", 1) == 1 && $mb->index("", " ", 1) == -1 && $mb->index(" ", "a", -1) == -1 && $mb->index("\x81\x81\x40\x81\x40", "\x81\x40") == 2 && $mb->index("エト、エド", "エド") == 3 && $mb->index("エト、エト", "エド") == -1 && $mb->index("エト、エド", "エト") == 0 && $mb->index("エド、エト", "エト") == 3 && $mb->index("ナカダ、ナカタ", "ナカタ") == 4 && $mb->index("ナカダ、ナカタ", "ナカダ") == 0 ? "ok" : "not ok", " 11\n"; print $mb->rindex("", "") == 0 && $mb->rindex("", "a") == -1 && $mb->rindex(" ", "") == 1 && $mb->rindex(" ", "", 1) == 1 && $mb->rindex("", " ", 1) == -1 && $mb->rindex(" ", "a", -1) == -1 && $mb->rindex("\x81\x81\x40\x81\x40", "\x81\x40") == 2 && $mb->rindex("エト、エド", "エド") == 3 && $mb->rindex("エト、エト", "エド") == -1 && $mb->rindex("エト、エド", "エト") == 0 && $mb->rindex("エド、エト", "エト") == 3 && $mb->rindex("ナカダ、ナカタ", "ナカタ") == 4 && $mb->rindex("ナカダ、ナカタ", "ナカダ") == 0 ? "ok" : "not ok", " 12\n"; print "ガガガガガ:ガガガガ:ガガガ" eq join(':', $mb->strsplit("カ", "ガガガガガカガガガガカガガガ")) && "ガガガガガカガガガガカガガガ" eq join(':', $mb->strsplit("カ", "ガガガガガカガガガガカガガガ", 1)) && "ガガガガガ:ガガガガカガガガ" eq join(':', $mb->strsplit("カ", "ガガガガガカガガガガカガガガ", 2)) && "ガガガガガ:ガガガガ:ガガガ" eq join(':', $mb->strsplit("カ", "ガガガガガカガガガガカガガガ", 3)) && "ガガガ:ガガ:ガガガ" eq join(':', $mb->strsplit("ガガカ", "ガガガガガカガガガガカガガガ")) && "ガガガ::ガ:ガガ" eq join(':', $mb->strsplit("ガガカ", "ガガガガガカガガカガガガカガガ")) && "ガガ:ガガカ:ガガ" eq join(':', $mb->strsplit("ガガガカ", "ガガガガガカガガカガガガカガガ")) ? "ok" : "not ok", " 13\n"; 1; __END__