The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
1;
__END__

=pod

=encoding Shift_JIS

=head1 NAME

Sjis-JA - JAPANESE DOCUMENT

=head1 —v–ñ

=head2 Žg—p‘O

  #!/usr/bin/perl
  use utf8;
  use open IO => ":encoding(cp932)";
  binmode STDIN => ":encoding(cp932)";
  binmode STDOUT => ":encoding(cp932)";
  binmode STDERR => ":encoding(cp932)";
  use Encode;
  
  my $char_length = length("ƒ}ƒ‹ƒ`ƒoƒCƒg•¶Žš—ñ"); # •¶Žš”‚ð•Ô‚·
  use bytes; # -- don't use it. just forget about it.
  my $byte_length = bytes::length("ƒ}ƒ‹ƒ`ƒoƒCƒg•¶Žš—ñ"); # ƒoƒCƒg”‚ð•Ô‚·

=head2 Žg—pŒã

ƒXƒNƒŠƒvƒg ShiftJIS_script.pl ‚Ì’†‚Ɉȉº‚ð‹Lq‚µ‚Ä...

  #!/usr/bin/perl
  use Sjis;
  
  my $byte_length = length("ƒ}ƒ‹ƒ`ƒoƒCƒg•¶Žš—ñ"); # ‚±‚ê‚Ü‚Å’Ê‚èƒoƒCƒg”‚ð•Ô‚·
  my $char_length = Sjis::length("ƒ}ƒ‹ƒ`ƒoƒCƒg•¶Žš—ñ"); # V‹@”\‚Æ‚µ‚Ä•¶Žš”‚ð•Ô‚·

ƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‚ňȉº‚̂悤‚ÉŽÀs‚·‚é

  perl ShiftJIS_script.pl argv1 argv2 ...

Sjisƒ\ƒtƒgƒEƒFƒA‚́AShiftJIS ‚É‚æ‚Á‚ď‘‚©‚ꂽ Perl ƒXƒNƒŠƒvƒg‚ÆperlƒCƒ“ƒ^ƒvƒŠƒ^
‚̊ԂɈʒu‚·‚éƒ~ƒhƒ‹ƒEƒFƒA‚Å‚·B

Perl ‚́AƒeƒLƒXƒgˆ—‚ª90%A‚»‚êˆÈŠO‚̏ˆ—‚ª10%‚ō\¬‚³‚ê‚é–â‘è‚ÉŒü‚¯‚čœK‰»‚³
‚ê‚Ä‚¢‚é‚ÆŒ¾‚í‚ê‚Ä‚¢‚Ü‚·B‚±‚±‚Å‚¢‚¤ƒeƒLƒXƒg‚É ShiftJIS ‚ªŠÜ‚Ü‚ê‚È‚©‚Á‚½‚Æ‚µ‚Ä‚à
Perl3 ˆÈ~‚Å‚ ‚ê‚΃oƒCƒiƒŠƒf[ƒ^‚ðˆµ‚¦‚é‚̂ŁAShiftJIS ƒf[ƒ^‚ðƒoƒCƒiƒŠƒf[ƒ^‚Æ
‚µ‚Ĉµ‚¤‚±‚Æ‚ª‰Â”\‚Å‚·B

"use Sjis;" ‚É‚æ‚Á‚āAƒXƒNƒŠƒvƒg‚ð ShiftJIS ‚Å‹Lq‚·‚邱‚Æ‚ª‚Å‚«‚é‚悤‚É‚È‚èA
³‹K•\Œ»‚ð‚Í‚¶‚ß‚Æ‚·‚é perl ‚ÌŠeŽí‹@”\‚Í ShiftJIS ‚ɑΉž‚·‚é‚悤‚É‚È‚è‚Ü‚·B
ŠÖ” length ‚ªˆµ‚¤’·‚³‚Ì’PˆÊ‚̓oƒCƒg‚̂܂܂ŁAUTF8ƒtƒ‰ƒO‚ÍŽg—p‚µ‚Ü‚¹‚ñB

=head1 ‚±‚Ì•¶‘‚Ì•\‹L‚Ì‚Ô‚ê‚ɂ‚¢‚Ä

‚¢‚í‚ä‚éƒVƒtƒgJIS‚ɑ΂·‚é–¼Ì‚ɂ‚¢‚āA‚±‚Ì•¶‘‚Å‚Í ShiftJIS ‚Æ‚µ‚½‚èƒVƒtƒgJIS
‚Æ‚µ‚½‚è Shift-JIS ‚Æ‚µ‚½‚肵‚Ä‚¢‚Ü‚·‚ªAˆÓ–¡‚·‚é‚à‚Ì‚Í“¯‚¶‚¾‚ƍl‚¦‚Ä‚­‚¾‚³‚¢B
‚±‚ê‚ç‚ð‹Lq‚·‚éÛ‚ÉŽQÆ‚µ‚½Ž‘—¿‚ª‚ ‚Á‚½ê‡AŠT‚Ë‚»‚Ì‚Ü‚Ü‚Ì•\‹L‚ðŽc‚µ‚Ä‚¢‚Ü‚·B
‚»‚ê‚ç‚ð•ÏX‚µ‚È‚¢‚Ù‚¤‚ª‚æ‚¢‚ÆŽv‚Á‚½‚½‚߁A‚±‚Ì•¶‘‘S‘Ì‚Æ‚µ‚Ä‚Í“ˆê‚³‚ê‚Ä‚¢‚Ü‚¹
‚ñB‚ ‚ç‚©‚¶‚ß‚²—¹³‚­‚¾‚³‚¢B

=head1 ‚à‚¤‚ЂƂ‚̖¢—ˆ(‚Ý‚ç‚¢)

JPerl ‚Í‚Æ‚Ä‚à—D‚ꂽƒ\ƒtƒgƒEƒFƒA‚Å‚·B‚¨‚Á‚ƁA‚±‚±‚Å‚¢‚¤ JPerl ‚Í“ú–{Œê‘Ήž”Å‚Ì
Perl ‚Ì‚±‚ƂŁAJava ‚â JVM ‚Æ‚ÍŠÖŒW‚ª‚ ‚è‚Ü‚¹‚ñBŒë‰ð‚³‚ꂽ‚èAŠú‘Ò‚³‚ꂽ‚è‚·‚é
‚Ì‚à¢‚é‚̂ŁA‚±‚̃\ƒtƒgƒEƒFƒA‚Í Sjis ‚Æ‚¢‚¤–¼‘O‚É‚µ‚Ü‚µ‚½B‚»‚ÌŒãAƒgƒbƒvƒŒƒxƒ‹
‚Ì–¼‘O‚ð”ð‚¯‚é‚½‚ß Char::Sjis ‚Æ‚¢‚¤–¼‘O‚ŃfƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“‚ðì¬‚·‚é‚悤‚É
‚µ‚Ü‚µ‚½‚ªA‚ ‚È‚½‚ª CPAN ƒeƒXƒ^[‚Ü‚½‚Í CPAN ‰^‰cŠÖŒWŽÒ‚Å‚È‚¢‚̂Ȃ炱‚ê‚Ü‚Å‚Ç‚¨
‚è Sjis.pm, Esjis.pm ‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B

‚Æ‚±‚ë‚ŁA‚»‚Ì JPerl ‚̓o[ƒWƒ‡ƒ“ 5.005_04 ˆÈ~Aƒƒ“ƒeƒiƒ“ƒX‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB

‘å•ÏŽc”O‚È‚±‚ƂɁAJPerl‚ÌŠJ”­‚ðs‚Á‚½“n•Ó ”Ž•¶‚³‚ñ‚Í The Perl Confernce Japan
1998 ‚É‚Ä

  "‚킽‚Ȃׂ͔æ‚ꂽ‚©‚玟‚̐l‚æ‚낵‚­‚Ë"

‚Æ‚¢‚¤ƒƒbƒZ[ƒW‚ðŽc‚µAPerl ‚©‚ç—£‚ê‚Ä‚¢‚Á‚Ä‚µ‚Ü‚¢‚Ü‚µ‚½B

ƒXƒ‰ƒCƒh15 "jperl ‚̍¡Œã"

ftp://ftp.oreilly.co.jp/pcjp98/watanabe/jperlconf.ppt

‚«‚Á‚Æ’N‚©‚ªˆø‚«Œp‚¢‚ŏ‘‚¢‚Ä‚­‚ê‚邾‚낤B
‚È‚Ç‚ÆŠú‘Ò‚ð‚µ‚È‚ª‚ç10”NŠÔA‘Ò‚¿‘±‚¯‚éŠÔ‚ɐ¢ŠE‚͈Ⴄ•ûŒü‚ւƐi‚ñ‚Å‚¢‚­‚Ì‚Å‚µ‚½B

‚±‚̃\ƒtƒgƒEƒFƒA‚Í ShiftJIS ‚ŏ‘‚©‚ꂽ Perl ƒXƒNƒŠƒvƒg‚ðƒGƒXƒP[ƒvˆ—‚·‚邽‚ß‚Ì
ƒ\[ƒXƒR[ƒhƒtƒBƒ‹ƒ^‚Å‚·BƒGƒXƒP[ƒvˆ—‚É‚æ‚Á‚Ä•¶ŽšƒR[ƒh‚ª•Ï‰»‚·‚邱‚Æ‚Í‚ ‚è
‚Ü‚¹‚ñB‚à‚µ•Ï‰»‚µ‚½ê‡‚́AƒoƒO‚Å‚·‚Ì‚Å•ñ’¸‚¯‚é‚Æ‚ ‚肪‚½‚¢‚Å‚·B

¬Œ÷‚µ‚½ƒ\ƒtƒgƒEƒFƒA‚©‚çˆÈ‰º‚Ì‚±‚Æ‚ðŠw‚ñ‚Å‚±‚̃\ƒtƒgƒEƒFƒA‚͍쐬‚³‚ê‚Ü‚µ‚½B

=over 2

=item * Perl4 ‚©‚ç Perl5 ‚̂悤‚ȏãˆÊŒÝŠ·«

=item * jcode.pl ‚̂悤‚ȍőåŒÀ‚̈ڐA«

=item * JPerl ‚̂悤‚ÉUTF8ƒtƒ‰ƒO‚ðŽg‚킸AShiftJIS‚ð‚»‚Ì‚Ü‚Üˆµ‚¢APerl ‚Í1‚‚̌¾Œê‚Ì‚Ü‚Ü

=item * Encode ƒ‚ƒWƒ…[ƒ‹‚̂悤‚É Perl ‚Í1‚‚̃Cƒ“ƒ^ƒvƒŠƒ^‚Ì‚Ü‚Ü

=item * Ruby ‚̂悤‚É•¶ŽšW‡“Æ—§‚ÈŽè–@

=item * cpanminus ‚̂悤‚Ƀ‚ƒmƒŠƒVƒbƒN‚ȃXƒNƒŠƒvƒg

=item * Perl Ž©g‚̂悤‚É TMTOWTDI(There's more than one way to do it)

=back

‚±‚̃\ƒtƒgƒEƒFƒA‚ÆPerl‚Ì–¢—ˆ‚ɂ‚¢‚čl‚¦‚é‚Æ‹¹‚ª‚Ç‚«‚Ç‚«‚µ‚Ü‚·B‚Ý‚È‚³‚ñ‚¾‚Á‚Ä
‚«‚Á‚Æ‚»‚¤‚Å‚µ‚傤H

=head1 Šî–{“I‚ÈŽd‘g‚Ý

Å‹ßAˆÈ‰º‚̃[ƒ‹‚ðÄ”­Œ©‚µ‚Ü‚µ‚½B

[Tokyo.pm] jus Benkyoukai

http://mail.pm.org/pipermail/tokyo-pm/1999-September/001854.html

("SJIS.pm" ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹–¼‚Å•Û‘¶‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Æ‚µ‚Ü‚·)

  package SJIS;
  use Filter::Util::Call;
  sub multibyte_filter {
      my $status;
      if (($status = filter_read()) > 0 ) {
          s/([\x81-\x9f\xe0-\xef])([\x40-\x7e\x80-\xfc])/
              sprintf("\\x%02x\\x%02x",ord($1),ord($2))
          /eg;
      }
      $status;
  }
  sub import {
      filter_add(\&multibyte_filter);
  }
  1;

Šî–{“I‚ɂ́A‚±‚̃\ƒtƒgƒEƒFƒA‚͏ã‹L‚̂悤‚È‚±‚Æ‚ðs‚¢‚Ü‚·B
‚½‚¾‚µAFilter::Util::Call ‚ð—˜—p‚µ‚Ä‚¢‚È‚¢“_APerl ‚̍\•¶‚ð‰ðÍ‚µ‚Ä•K—v‚ɉž‚¶‚Ä
ƒGƒXƒP[ƒv‚·‚é“_‚ªˆÙ‚È‚è‚Ü‚·B

=head1 ƒCƒ“ƒXƒg[ƒ‹•û–@(ŠÈ’P‚È•û–@)

   CPAN ‚©‚ç Sjis.pm ‚Æ Esjis.pm ‚ðƒ_ƒEƒ“ƒ[ƒh‚µ Perl ‚Ì lib ƒfƒBƒŒƒNƒgƒŠ‚ÉŠi”[‚µ‚Ü‚·B

=head1 ƒCƒ“ƒXƒg[ƒ‹•û–@(make‚ðŽg‚¤ê‡)

   perl Makefile.PL
   make test
   make install

=head1 ƒCƒ“ƒXƒg[ƒ‹•û–@(make‚ðŽg‚í‚È‚¢ê‡)

   perl pMakefile.pl          --- pMakefile.pl ‚ª pmake.bat ‚𐶐¬‚µ‚Ü‚·
   pmake.bat
   pmake.bat test
   pmake.bat install          --- Œ»ÝŽg—p’†‚Ì perl ŠÂ‹«‚ɃCƒ“ƒXƒg[ƒ‹‚µ‚Ü‚·
   pmake.bat dist             --- CPAN ”z•z—pƒpƒbƒP[ƒW‚ðì‚è‚Ü‚·
   pmake.bat ptar.bat         --- ptar.bat ‚ðì¬‚µ‚Ü‚·

=head1 ƒ\ƒtƒgƒEƒFƒA‚̈ꗗ

   Sjis.pm               --- ShiftJIS ƒ\[ƒXƒR[ƒhƒtƒBƒ‹ƒ^
   Esjis.pm              --- Sjis.pm ‚̃‰ƒ“ƒ^ƒCƒ€ƒ‹[ƒ`ƒ“
   Char/Sjis.pm          --- CPANƒeƒXƒ^[Œü‚¯‚Ì Sjis.pm
   Char/Esjis.pm         --- CPANƒeƒXƒ^[Œü‚¯‚Ì Esjis.pm

=head1 DOS•—ƒVƒXƒeƒ€‚É‚¨‚¯‚éƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚̃ƒCƒ‹ƒhƒJ[ƒh“WŠJ

DOS•—ƒVƒXƒeƒ€‚Ì•W€ƒVƒFƒ‹(COMMAND.COM ‚¨‚æ‚Ñ cmd.exe)‚́A‹N“®‚·‚éƒvƒƒOƒ‰ƒ€‚Ö“n‚·
ƒpƒ‰ƒ[ƒ^‚̃ƒCƒ‹ƒhƒJ[ƒh“WŠJ‚ðs‚¢‚Ü‚¹‚ñB‚»‚Ì‘ã‚í‚è‚Æ‚µ‚Ä Esjis.pm “à‚Ì import
ŠÖ”‚ªƒƒCƒ‹ƒhƒJ[ƒh“WŠJ‚ðs‚¤‚悤‚É‚È‚Á‚Ä‚¢‚Ü‚·B

   ŽQl Esjis.pm ‚©‚甲ˆ
   #
   # @ARGV wildcard globbing
   #
   sub import {

       if ($^O =~ /\A (?: MSWin32 | NetWare | symbian | dos ) \z/oxms) {
           my @argv = ();
           for (@ARGV) {

               # has space
               if (/\A (?:$q_char)*? [ ] /oxms) {
                   if (my @glob = Esjis::glob(qq{"$_"})) {
                       push @argv, @glob;
                   }
                   else {
                       push @argv, $_;
                   }
               }

               # has wildcard metachar
               elsif (/\A (?:$q_char)*? [*?] /oxms) {
                   if (my @glob = Esjis::glob($_)) {
                       push @argv, @glob;
                   }
                   else {
                       push @argv, $_;
                   }
               }

               # no wildcard globbing
               else {
                   push @argv, $_;
               }
           }
           @ARGV = @argv;
       }
   }

=head1 ‰‚ß‚Ä‚ÌJPerl

  œ Žg‚¢•û(‚»‚Ì1)

    1. ƒXƒNƒŠƒvƒg ShiftJIS_script.pl ‚Ì’†‚Ɉȉº‚Ì‚¢‚¸‚ê‚©‚ð‹Lq‚µ‚Ä...

      use Sjis;
      use Sjis ver.sion;              --- Sjis.pm ‚̃o[ƒWƒ‡ƒ“‚ª ver.sion ˆÈã‚È‚çŽÀs‰Â
      use Sjis ver.sion.0;            --- Sjis.pm ‚̃o[ƒWƒ‡ƒ“‚ª ver.sion ‚Å‚È‚¯‚ê‚Î die ‚·‚é
      use Sjis qw(ord reverse getc);  --- ord, reverse, getc ‚ÌŠg’£‹@”\‚ðŽg‚¤ê‡
      use Sjis ver.sion qw(ord reverse getc);
      use Sjis ver.sion.0 qw(ord reverse getc);

      ¦ no Sjis; ‚Í—˜—p‚Å‚«‚Ü‚¹‚ñB

      use Sjis ver.sion.0; Œ`Ž®‚¾‚Æ Sjisƒ\ƒtƒgƒEƒFƒA‚̃o[ƒWƒ‡ƒ“‚̏ãŒÀE‰ºŒÀ‚Ì‘o•û
      ‚ðŽw’è‚Å‚«‚Ü‚·BŽÀsŽž‚Ì Sjisƒ\ƒtƒgƒEƒFƒA‚ª‹Lq‚µ‚½ƒo[ƒWƒ‡ƒ“‚Æ‚Ò‚Á‚½‚蓯‚¶‚Å
      ‚È‚¢‚È‚ç‚Î die ‚µ‚Ü‚·B—Ⴆ‚΁Ause Sjis 0.88.0; ‚Æ‹Lq‚·‚é‚Æ Sjisƒ\ƒtƒgƒEƒFƒA
      ‚̃o[ƒWƒ‡ƒ“‚ª 0.88 ‚Å‚ ‚邱‚Æ‚ð•Ûá‚Å‚«‚Ü‚·B

    2. ƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‚ňȉº‚̂悤‚ÉŽÀs‚·‚é

      perl  ShiftJIS_script.pl  wild*  *card  and  '*quote*'  on MSWin32

      ? * ‚ðŽg‚Á‚ăƒCƒ‹ƒhƒJ[ƒh‚ÌŽw’肪‚Å‚«‚Ü‚·
      ' ` ' ‚ðŽg‚Á‚ăNƒH[ƒg‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·

  œ Žg‚¢•û(‚»‚Ì2)

    ƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‚ňȉº‚̂悤‚ÉŽÀs‚·‚é

      C:\>perl  Sjis.pm  ShiftJIS_script.pl  >  Escaped_script.pl.e
      C:\>perl  Escaped_script.pl.e

      ShiftJIS_script.pl  --- ShiftJIS ‚ŏ‘‚©‚ꂽƒXƒNƒŠƒvƒg
      Escaped_script.pl.e --- ƒGƒXƒP[ƒv‚³‚ꂽƒXƒNƒŠƒvƒg

  œ Žg‚¦‚éƒTƒuƒ‹[ƒ`ƒ“‚Ɗ֐”
      Sjis::ord(...);
      Sjis::reverse(...);
      Sjis::getc(...);
      Sjis::length(...);
      Sjis::substr(...);
      Sjis::index(...);
      Sjis::rindex(...);
      Sjis::eval(...);
      CORE::chop(...);
      CORE::ord(...);
      CORE::reverse(...);
      CORE::getc(...);
      CORE::index(...);
      CORE::rindex(...);

  œ ˆÈ‰º‚̓_ƒ~[ƒTƒuƒ‹[ƒ`ƒ“‚Æ‚µ‚Ä—pˆÓ‚³‚ê‚Ä‚¢‚é
      utf8::upgrade(...);
      utf8::downgrade(...);
      utf8::encode(...);
      utf8::decode(...);
      utf8::is_utf8(...);
      utf8::valid(...);
      bytes::chr(...);
      bytes::index(...);
      bytes::length(...);
      bytes::ord(...);
      bytes::rindex(...);
      bytes::substr(...);

=head1 ƒGƒXƒP[ƒv‚É‚æ‚éãˆÊŒÝŠ·«‚ÌŠm•Û

‚±‚̃\ƒtƒgƒEƒFƒA‚͉ߋŽ‚Ì‚à‚Ì‚ð‰ó‚µ‚½‚è‚Í‚¹‚¸Aí‚ɁuƒGƒXƒP[ƒvv‚É‚æ‚Á‚Ä‹@”\‚ð’ljÁ
‚µ‚Ä‚¢‚Ü‚·B‚¾‚©‚獡‚܂ʼn”\‚Å‚ ‚Á‚½‚±‚Æ‚ª•s‰Â”\‚ɂȂ邱‚Æ‚Í‚ ‚è‚Ü‚¹‚ñB‚±‚̃Aƒv
ƒ[ƒ`‚́AŒã‘Þ‚ªŒˆ‚µ‚Ä‹–‚³‚ê‚È‚¢•ª–ì‚É—LŒø‚Å‚·B‚È‚¨AãˆÊŒÝŠ·«‚ÌŠm•Û‚Ì‚½‚߂ɁA
PerlŽ©g‚Ì”ñŒÝŠ·‚ÈŠg’£‚ðŽæ‚菜‚­‚±‚Æ‚à‚ ‚è‚Ü‚·B

=head1 ƒXƒNƒŠƒvƒg‚̃GƒXƒP[ƒv

ì¬‚µ‚½ƒXƒNƒŠƒvƒg‚É 'use Sjis;' ‚Ə‘‚­•K—v‚ª‚ ‚è‚Ü‚·B

  ---------------------
  ˆÈ‰º‚̂悤‚ɏ‘‚«‚Ü‚·
  ---------------------
  use Sjis;
  ---------------------

=head1 ƒ}ƒ‹ƒ`ƒoƒCƒg•¶Žš‚̃GƒXƒP[ƒv

‚±‚̃\ƒtƒgƒEƒFƒA‚É‚æ‚Á‚āAƒ}ƒ‹ƒ`ƒoƒCƒg•¶Žš‚Ì‘æ2ƒoƒCƒg‚Ì @  [  \  ]  ^  `  {  |  }
‚Ì’¼‘O‚É chr(0x5c) ‚ª‘}“ü‚³‚ê‚Ü‚·B‘Ώۂ͈ȉº‚̉ӏŠ‚Å‚·B

=over 2

=item * ƒVƒ“ƒOƒ‹ƒNƒH[ƒg’†‚Ì•¶Žš—ñ ('', q{}, <<'END' and qw{})

=item * ƒ_ƒuƒ‹ƒNƒH[ƒg’†‚Ì•¶Žš—ñ ("", qq{}, <<END, <<"END", ``, qx{} and <<`END`)

=item * ƒVƒ“ƒOƒ‹ƒNƒH[ƒg’†‚̐³‹K•\Œ» (m'', s''', split(''), split(m'') and qr'')

=item * ƒ_ƒuƒ‹ƒNƒH[ƒg’†‚̐³‹K•\Œ» (//, m//, ??, s///, split(//), split(m//) and qr//)

=item * tr/// ‚Ì’†‚Ì•¶Žš (tr/// and y///)

=back

  —á: ƒJƒ^ƒJƒi‚́uƒ\vƒR[ƒh‚Í "\x83\x5C"
  
                  Œ©‚¦•û  ƒ_ƒ“ƒv
  -----------------------------------------
  source script   "`/"    [83 5c]
  -----------------------------------------
 
  ‚±‚±‚Å use Sjis; ‚ðŽÀs
                          ƒ_ƒ“ƒv
  -----------------------------------------
  escaped script  "`\/"   [83 [5c] 5c]
  -----------------------------------------
                    ^--- Sjisƒ\ƒtƒgƒEƒFƒA‚ŃGƒXƒP[ƒv‚³‚ê‚é
 
  ŽQl            Œ©‚¦•û  ƒ_ƒ“ƒv
  -----------------------------------------
  your eye's      "`/\"   [83 5c] [5c]
  -----------------------------------------
  perl eye's      "`\/"   [83] \[5c]
  -----------------------------------------
 
                          ƒ_ƒ“ƒv
  -----------------------------------------
  in the perl     "`/"    [83] [5c]
  -----------------------------------------

=head1 ³‹K•\Œ»’†‚ւ̃}ƒ‹ƒ`ƒoƒCƒgƒAƒ“ƒJ[ƒŠƒ“ƒOˆ—‚̒ljÁ

Sjisƒ\ƒtƒgƒEƒFƒA‚͐³‹K•\Œ»‚̐擪‚Ƀ}ƒ‹ƒ`ƒoƒCƒgƒAƒ“ƒJ[ƒŠƒ“ƒOˆ—‚ð•t‚¯‘«‚µ‚Ü‚·B

  --------------------------------------------------------------------------------
  ˆ—‘O                  ˆ—Œã
  --------------------------------------------------------------------------------
  m/regexp/               m/${Esjis::anchor}(?:regexp).../
  --------------------------------------------------------------------------------

${Esjis::anchor} ‚Ì‹ï‘Ì“I‚È“à—e‚ɂ‚¢‚Ä‚Í•Ê“ruSjisƒ\ƒtƒgƒEƒFƒA‚̃}ƒ‹ƒ`ƒoƒCƒgƒAƒ“
ƒJ[ƒŠƒ“ƒOˆ—v‚É‹Lq‚µ‚Ä‚ ‚è‚Ü‚·B

=head1 ‘æ2ƒIƒNƒeƒbƒg‚̃GƒXƒP[ƒvˆ—

Sjisƒ\ƒtƒgƒEƒFƒA‚͐³‹K•\Œ»’†‚̃}ƒ‹ƒ`ƒoƒCƒg•¶Žš‚Ì‘æ2ƒIƒNƒeƒbƒg‚ðƒGƒXƒP[ƒv‚µ‚Ü‚·B

  --------------------------------------------------------------------------------
  ˆ—‘O                  ˆ—Œã
  --------------------------------------------------------------------------------
  m{...`/...}             m{...`/\...}
  --------------------------------------------------------------------------------

=head1 ³‹K•\Œ»’†‚̃}ƒ‹ƒ`ƒoƒCƒg•¶Žš‚̈µ‚¢‚ɂ‚¢‚Ä

Sjisƒ\ƒtƒgƒEƒFƒA‚̓}ƒ‹ƒ`ƒoƒCƒg•¶Žš‚Ö‚Ì—ÊŽw’èŽqA‚¨‚æ‚у}ƒ‹ƒ`ƒoƒCƒg•¶Žš‚̃JƒXƒ^ƒ€
•¶ŽšƒNƒ‰ƒX‚ðƒNƒ‰ƒXƒ^ƒŠƒ“ƒO‚µ‚Ü‚·B‚Ü‚½ƒNƒ‰ƒbƒVƒbƒN‚È Perl •¶ŽšƒNƒ‰ƒXAPOSIX ƒXƒ^ƒC
ƒ‹‚Ì•¶ŽšƒNƒ‰ƒX‚ðƒ}ƒ‹ƒ`ƒoƒCƒg•¶Žš‘Ήž”łɏ‘‚«Š·‚¦‚Ü‚·B

  --------------------------------------------------------------------------------
  ˆ—‘O                  ˆ—Œã
  --------------------------------------------------------------------------------
  m/...MULTIOCT+.../      m/...(?:MULTIOCT)+.../
  m/...[AN-EM].../        m/...(?:A[N-Z]|[B-D][A-Z]|E[A-M]).../
  m/...\D.../             m/...(?:${Esjis::eD}).../
  m/...[[:^digit:]].../   m/...(?:${Esjis::not_digit}).../
  --------------------------------------------------------------------------------

=head1 Esjis::ignorecase() ‚̌Ăяo‚µ

Sjisƒ\ƒtƒgƒEƒFƒA‚Í /i CüŽq‚Ì‘ã‚í‚è‚É Esjis::ignorecase() ‚̌ďo‚µ‚ð‘‚«‰Á‚¦‚Ü‚·B

  --------------------------------------------------------------------------------
  ˆ—‘O                  ˆ—Œã
  --------------------------------------------------------------------------------
  m/...$var.../i          m/...@{[Esjis::ignorecase($var)]}.../
  --------------------------------------------------------------------------------

=head1 •¶ŽšŽwŒü‚̐³‹K•\Œ»

/b CüŽq‚Ì‚È‚¢³‹K•\Œ»‚Í•¶ŽšŽwŒü‚Ì“­‚«‚ð‚µ‚Ü‚·B
‚‚܂èA/./ (ƒhƒbƒg)‚Í•¶Žš‚Ƀ}ƒbƒ`‚µ‚Ü‚·B

  --------------------------------------------------------------------------------
  ˆ—‘O                  ˆ—Œã
  --------------------------------------------------------------------------------
  /regexp/                / ã‹LŽQÆ $Esjis::matched/
  m/regexp/               m/ ã‹LŽQÆ $Esjis::matched/
  ?regexp?                m? ã‹LŽQÆ $Esjis::matched?
  m?regexp?               m? ã‹LŽQÆ $Esjis::matched?
 
  $_ =~                   ($_ =~ m/ ã‹LŽQÆ $Esjis::matched/) ?
  s/regexp/replacement/   eval{ Esjis::s_matched(); local $^W=0; my $__r=qq/replacement/; $_="${1}$__r$'"; 1 } :
                          undef
 
  $_ !~                   ($_ !~ m/ ã‹LŽQÆ $Esjis::matched/) ?
  s/regexp/replacement/   1 :
                          eval{ Esjis::s_matched(); local $^W=0; my $__r=qq/replacement/; $_="${1}$__r$'"; undef }
 
  split(/regexp/)         Esjis::split(qr/regexp/)
  split(m/regexp/)        Esjis::split(qr/regexp/)
  split(qr/regexp/)       Esjis::split(qr/regexp/)
  qr/regexp/              qr/ ã‹LŽQÆ $Esjis::matched/
  --------------------------------------------------------------------------------

=head1 ƒoƒCƒgŽwŒü‚̐³‹K•\Œ»

/b CüŽq‚ð•t‰Á‚µ‚½³‹K•\Œ»‚̓oƒCƒgŽwŒü‚Ì“­‚«‚ð‚µ‚Ü‚·B
‚‚܂èA/./ (ƒhƒbƒg)‚̓oƒCƒg‚Ƀ}ƒbƒ`‚µ‚Ü‚·B

  --------------------------------------------------------------------------------
  ˆ—‘O                  ˆ—Œã
  --------------------------------------------------------------------------------
  /regexp/b               /(?:regexp)$Esjis::matched/
  m/regexp/b              m/(?:regexp)$Esjis::matched/
  ?regexp?b               m?regexp$Esjis::matched?
  m?regexp?b              m?regexp$Esjis::matched?
 
  $_ =~                   ($_ =~ m/(\G[\x00-\xFF]*?)(?:regexp)$Esjis::matched/) ?
  s/regexp/replacement/b  eval{ Esjis::s_matched(); local $^W=0; my $__r=qq/replacement/; $_="${1}$__r$'"; 1 } :
                          undef
 
  $_ !~                   ($_ !~ m/(\G[\x00-\xFF]*?)(?:regexp)$Esjis::matched/) ?
  s/regexp/replacement/b  1 :
                          eval{ Esjis::s_matched(); local $^W=0; my $__r=qq/replacement/; $_="${1}$__r$'"; undef }
 
  split(/regexp/b)        split(qr/regexp/)
  split(m/regexp/b)       split(qr/regexp/)
  split(qr/regexp/b)      split(qr/regexp/)
  qr/regexp/b             qr/(?:regexp)$Esjis::matched/
  --------------------------------------------------------------------------------

=head1 •¶ŽšƒNƒ‰ƒX‚̃GƒXƒP[ƒv

‰ß‹Ž‚Ìperl‚Ƃ̌݊·«‚ð•Û‚‚½‚ß‚É•¶ŽšƒNƒ‰ƒX‚͈ȉº‚̂悤‚ɍĒè‹`‚³‚ê‚Ä‚¢‚Ü‚·B

  ---------------------------------------------------------------
  escape        class
  ---------------------------------------------------------------
   .            ${Esjis::dot}
                ${Esjis::dot_s}    (/s CüŽq‚ ‚è)
  \d            [0-9]
  \s            [\x09\x0A\x0B\x0C\x0D\x20]
  \w            [0-9A-Z_a-z]
  \D            ${Esjis::eD}
  \S            ${Esjis::eS}
  \W            ${Esjis::eW}
  \h            [\x09\x20]
  \v            [\x0A\x0B\x0C\x0D]
  \H            ${Esjis::eH}
  \V            ${Esjis::eV}
  \C            [\x00-\xFF]
  \X            X (‚½‚¾‚̉pŽšAX ‚Å‚·)
  \R            ${Esjis::eR}
  \N            ${Esjis::eN}
  ---------------------------------------------------------------

“¯—l‚É POSIX ƒXƒ^ƒCƒ‹‚Ì•¶ŽšƒNƒ‰ƒX‚àÄ’è‹`‚³‚ê‚Ä‚¢‚Ü‚·B

  ---------------------------------------------------------------
  escape        class
  ---------------------------------------------------------------
  [:alnum:]     [\x30-\x39\x41-\x5A\x61-\x7A]
  [:alpha:]     [\x41-\x5A\x61-\x7A]
  [:ascii:]     [\x00-\x7F]
  [:blank:]     [\x09\x20]
  [:cntrl:]     [\x00-\x1F\x7F]
  [:digit:]     [\x30-\x39]
  [:graph:]     [\x21-\x7F]
  [:lower:]     [\x61-\x7A]
                [\x41-\x5A\x61-\x7A]     (/i CüŽq‚ ‚è)
  [:print:]     [\x20-\x7F]
  [:punct:]     [\x21-\x2F\x3A-\x3F\x40\x5B-\x5F\x60\x7B-\x7E]
  [:space:]     [\s\x0B]
  [:upper:]     [\x41-\x5A]
                [\x41-\x5A\x61-\x7A]     (/i CüŽq‚ ‚è)
  [:word:]      [\x30-\x39\x41-\x5A\x5F\x61-\x7A]
  [:xdigit:]    [\x30-\x39\x41-\x46\x61-\x66]
  [:^alnum:]    ${Esjis::not_alnum}
  [:^alpha:]    ${Esjis::not_alpha}
  [:^ascii:]    ${Esjis::not_ascii}
  [:^blank:]    ${Esjis::not_blank}
  [:^cntrl:]    ${Esjis::not_cntrl}
  [:^digit:]    ${Esjis::not_digit}
  [:^graph:]    ${Esjis::not_graph}
  [:^lower:]    ${Esjis::not_lower}
                ${Esjis::not_lower_i}    (/i CüŽq‚ ‚è)
  [:^print:]    ${Esjis::not_print}
  [:^punct:]    ${Esjis::not_punct}
  [:^space:]    ${Esjis::not_space}
  [:^upper:]    ${Esjis::not_upper}
                ${Esjis::not_upper_i}    (/i CüŽq‚ ‚è)
  [:^word:]     ${Esjis::not_word}
  [:^xdigit:]   ${Esjis::not_xdigit}
  ---------------------------------------------------------------

\b ‚Æ \B ‚à‰ß‹Ž‚Ìperl‚Ƃ̌݊·«‚ð•Û‚‚½‚߂ɍĒè‹`‚³‚ê‚Ä‚¢‚Ü‚·B

  ---------------------------------------------------------------
  escape      class
  ---------------------------------------------------------------
  \b          ${Esjis::eb}
  \B          ${Esjis::eB}
  ---------------------------------------------------------------

ã‹L‚Ì’è‹`‚́Aƒtƒ@ƒCƒ‹ Esjis.pm ‚Ì’†‚ňȉº‚̂悤‚É’è‹`‚³‚ê‚Ä‚¢‚Ü‚·B

  ---------------------------------------------------------------------------------------------------------------------------------------------------------
  class                    Definition
  ---------------------------------------------------------------------------------------------------------------------------------------------------------
  ${Esjis::anchor}         qr{\G(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC])*?}
                           32766ƒIƒNƒeƒbƒg‚ð’´‚¦‚镶Žš—ñ‚ðˆµ‚¦‚é‚悤‚É‚·‚邽‚߁AActivePerl5.6ˆÈ~(5.10.0ŠÜ‚Þ)A‚Ü‚½‚Í‚»‚Ì‘¼‚ÌPerl5.10.1ˆÈ~‚̏ꍇ‚͈ȉº‚̂悤‚É‚È‚è‚Ü‚·
                           qr{\G(?(?=.{0,32766}\z)(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC])*?|(?(?=[\x00-\x80\xA0-\xDF\xFD-\xFF]+\z).*?|(?:.*?[\x00-\x80\xA0-\xDF\xFD-\xFF](?:[^\x00-\x80\xA0-\xDF\xFD-\xFF]{2})*?)))}oxms;
  ${Esjis::dot}            qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC\x0A])}
  ${Esjis::dot_s}          qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC])}
  ${Esjis::eD}             qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC0-9])}
  ${Esjis::eS}             qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC\x09\x0A\x0B\x0C\x0D\x20])}
  ${Esjis::eW}             qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC0-9A-Z_a-z])}
  ${Esjis::eH}             qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC\x09\x20])}
  ${Esjis::eV}             qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC\x0A\x0B\x0C\x0D])}
  ${Esjis::eR}             qr{(?:\x0D\x0A|[\x0A\x0D])}
  ${Esjis::eN}             qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC\x0A])}
  ${Esjis::not_alnum}      qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC\x30-\x39\x41-\x5A\x61-\x7A])}
  ${Esjis::not_alpha}      qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC\x41-\x5A\x61-\x7A])}
  ${Esjis::not_ascii}      qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC\x00-\x7F])}
  ${Esjis::not_blank}      qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC\x09\x20])}
  ${Esjis::not_cntrl}      qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC\x00-\x1F\x7F])}
  ${Esjis::not_digit}      qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC\x30-\x39])}
  ${Esjis::not_graph}      qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC\x21-\x7F])}
  ${Esjis::not_lower}      qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC\x61-\x7A])}
  ${Esjis::not_lower_i}    qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC])}
  ${Esjis::not_print}      qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC\x20-\x7F])}
  ${Esjis::not_punct}      qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC\x21-\x2F\x3A-\x3F\x40\x5B-\x5F\x60\x7B-\x7E])}
  ${Esjis::not_space}      qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC\s\x0B])}
  ${Esjis::not_upper}      qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC\x41-\x5A])}
  ${Esjis::not_upper_i}    qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC])}
  ${Esjis::not_word}       qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC\x30-\x39\x41-\x5A\x5F\x61-\x7A])}
  ${Esjis::not_xdigit}     qr{(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC\x30-\x39\x41-\x46\x61-\x66])}
  ${Esjis::eb}             qr{(?:\A(?=[0-9A-Z_a-z])|(?<=[\x00-\x2F\x40\x5B-\x5E\x60\x7B-\xFF])(?=[0-9A-Z_a-z])|(?<=[0-9A-Z_a-z])(?=[\x00-\x2F\x40\x5B-\x5E\x60\x7B-\xFF]|\z))}
  ${Esjis::eB}             qr{(?:(?<=[0-9A-Z_a-z])(?=[0-9A-Z_a-z])|(?<=[\x00-\x2F\x40\x5B-\x5E\x60\x7B-\xFF])(?=[\x00-\x2F\x40\x5B-\x5E\x60\x7B-\xFF]))}
  ---------------------------------------------------------------------------------------------------------------------------------------------------------

=head1 \N, \p, \P, \X ‚̃Aƒ“ƒGƒXƒP[ƒv

‚±‚̃\ƒtƒgƒEƒFƒA‚É‚æ‚Á‚ĉp”Žš‚̐³‹K•\Œ»ƒƒ^ƒVƒ“ƒ{ƒ‹ \N, \p, \P, \X ‚̐擪‚Ì
'\' ‚ªŽæ‚菜‚©‚ê‚Ü‚·B‚±‚Ì•û–@‚Å’ŠÛ‰»‚Ì㩂ð”ð‚¯‚é‚±‚Æ‚ª‚Å‚«‚Ü‚·B

ƒAƒ“ƒGƒXƒP[ƒvŒã‚É "{" ‚ðƒGƒXƒP[ƒv‚·‚é‚悤‚É‚µ‚½——R‚́A
Deprecate literal unescaped "{" in regexes.
http://perl5.git.perl.org/perl.git/commit/2a53d3314d380af5ab5283758219417c6dfa36e9
‚É‚æ‚é‚à‚Ì‚Å‚·B

  ------------------------------------
  ˆ—‘O           ˆ—Œã
  ------------------------------------
  \N{CHARNAME}     N\{CHARNAME}
  \p{L}            p\{L}
  \p{^L}           p\{^L}
  \p{\^L}          p\{\^L}
  \pL              pL
  \P{L}            P\{L}
  \P{^L}           P\{^L}
  \P{\^L}          P\{\^L}
  \PL              PL
  \X               X
  ------------------------------------

=head1 ‘gž‚݊֐”‚̃GƒXƒP[ƒv

‚±‚̃\ƒtƒgƒEƒFƒA‚É‚æ‚Á‚Ċ֐”–¼‚̐擪‚É 'Esjis::' ‚ª‘‚«‰Á‚í‚èƒGƒXƒP[ƒv‚³‚ê‚Ü‚·B
Esjis::* ƒTƒuƒ‹[ƒ`ƒ“‚Í Esjis.pm ‚ª’ñ‹Ÿ‚µ‚Ü‚·B

  --------------------------------------------
  ˆ—‘O      ˆ—Œã            “®ì
  --------------------------------------------
  length      length            ƒoƒCƒgŽwŒü
  substr      substr            ƒoƒCƒgŽwŒü
  pos         pos               ƒoƒCƒgŽwŒü
  split       Esjis::split      •¶ŽšŽwŒü
  tr///       Esjis::tr         •¶ŽšŽwŒü
  tr///b      tr///             ƒoƒCƒgŽwŒü
  tr///B      tr///             ƒoƒCƒgŽwŒü
  y///        Esjis::tr         •¶ŽšŽwŒü
  y///b       tr///             ƒoƒCƒgŽwŒü
  y///B       tr///             ƒoƒCƒgŽwŒü
  chop        Esjis::chop       •¶ŽšŽwŒü
  index       Esjis::index      •¶ŽšŽwŒü
  rindex      Esjis::rindex     •¶ŽšŽwŒü
  lc          Esjis::lc         •¶ŽšŽwŒü
  lcfirst     Esjis::lcfirst    •¶ŽšŽwŒü
  uc          Esjis::uc         •¶ŽšŽwŒü
  ucfirst     Esjis::ucfirst    •¶ŽšŽwŒü
  fc          Esjis::fc         •¶ŽšŽwŒü
  chr         Esjis::chr        •¶ŽšŽwŒü
  glob        Esjis::glob       •¶ŽšŽwŒü
  lstat       Esjis::lstat      •¶ŽšŽwŒü
  opendir     Esjis::opendir    •¶ŽšŽwŒü
  stat        Esjis::stat       •¶ŽšŽwŒü
  unlink      Esjis::unlink     •¶ŽšŽwŒü
  chdir       Esjis::chdir      •¶ŽšŽwŒü
  do          Esjis::do         •¶ŽšŽwŒü
  require     Esjis::require    •¶ŽšŽwŒü
  --------------------------------------------

  ------------------------------------------------------------------------------------------------------------------------
  ˆ—‘O                   ˆ—Œã
  ------------------------------------------------------------------------------------------------------------------------
  use Perl::Module;        BEGIN { Esjis::require 'Perl/Module.pm'; Perl::Module->import() if Perl::Module->can('import'); }
  use Perl::Module @list;  BEGIN { Esjis::require 'Perl/Module.pm'; Perl::Module->import(@list) if Perl::Module->can('import'); }
  use Perl::Module ();     BEGIN { Esjis::require 'Perl/Module.pm'; }
  no Perl::Module;         BEGIN { Esjis::require 'Perl/Module.pm'; Perl::Module->unimport() if Perl::Module->can('unimport'); }
  no Perl::Module @list;   BEGIN { Esjis::require 'Perl/Module.pm'; Perl::Module->unimport(@list) if Perl::Module->can('unimport'); }
  no Perl::Module ();      BEGIN { Esjis::require 'Perl/Module.pm'; }
  ------------------------------------------------------------------------------------------------------------------------

=head1 ƒtƒ@ƒCƒ‹ƒeƒXƒg‰‰ŽZŽq‚̃GƒXƒP[ƒv

‚±‚̃\ƒtƒgƒEƒFƒA‚É‚æ‚Á‚ĉ‰ŽZŽq‚Ì '-' ‚Í 'Esjis::' ‚ɏ‘‚«Š·‚í‚è‚Ü‚·B

  MSWin32, MacOS ‚¨‚æ‚Ñ UNIX•—‚̃VƒXƒeƒ€‚Å—˜—p‰Â”\‚ȉ‰ŽZŽq
  -------------------------------------------------------------------------------
  ˆ—‘O    ˆ—Œã      à–¾
  -------------------------------------------------------------------------------
  -r        Esjis::r    ƒtƒ@ƒCƒ‹‚âƒfƒBƒŒƒNƒgƒŠ‚ª‚±‚Ì(ŽÀŒø)ƒ†[ƒU‚Ü‚½‚̓Oƒ‹[ƒv‚©‚ç“ǂݏo‚µ‰Â”\
  -w        Esjis::w    ƒtƒ@ƒCƒ‹‚âƒfƒBƒŒƒNƒgƒŠ‚ª‚±‚Ì(ŽÀŒø)ƒ†[ƒU‚Ü‚½‚̓Oƒ‹[ƒv‚©‚珑‚«ž‚݉”\
  -e        Esjis::e    ƒtƒ@ƒCƒ‹‚âƒfƒBƒŒƒNƒgƒŠ–¼‚ª‘¶Ý‚·‚é
  -x        Esjis::x    ƒtƒ@ƒCƒ‹‚âƒfƒBƒŒƒNƒgƒŠ‚ª‚±‚Ì(ŽÀŒø)ƒ†[ƒU‚Ü‚½‚̓Oƒ‹[ƒv‚©‚çŽÀs‰Â”\
  -z        Esjis::z    ƒtƒ@ƒCƒ‹‚ª‘¶Ý‚µ‚Ä‚¢‚Ä‘å‚«‚³‚ª0‚Å‚ ‚é(ƒfƒBƒŒƒNƒgƒŠ‚ɑ΂µ‚Ă͏í‚É‹U‚É‚È‚é)
  -f        Esjis::f    ƒGƒ“ƒgƒŠ‚Í•’ʂ̃tƒ@ƒCƒ‹‚Å‚ ‚é
  -d        Esjis::d    ƒGƒ“ƒgƒŠ‚̓fƒBƒŒƒNƒgƒŠ‚Å‚ ‚é
  -t        -t          ‚±‚̃tƒ@ƒCƒ‹ƒnƒ“ƒhƒ‹‚ÍTTY‚Å‚ ‚é(isatty()ƒVƒXƒeƒ€ŠÖ”‚ÌŒ‹‰Ê‚Å”»’è‚·‚éB
                        ‚±‚̃eƒXƒg‚̓tƒ@ƒCƒ‹–¼‚É‚Í“K—p‚Å‚«‚È‚¢)
  -T        Esjis::T    ‚±‚̃tƒ@ƒCƒ‹‚́uƒeƒLƒXƒgvƒtƒ@ƒCƒ‹‚̂悤‚Å‚ ‚é
  -B        Esjis::B    ‚±‚̃tƒ@ƒCƒ‹‚́uƒoƒCƒiƒŠvƒtƒ@ƒCƒ‹‚̂悤‚Å‚ ‚é
  -M        Esjis::M    ÅŒã‚ɕύX‚³‚ê‚Ä‚©‚ç‚Ì“ú”
  -A        Esjis::A    ÅŒã‚ɃAƒNƒZƒX‚³‚ê‚Ä‚©‚ç‚Ì“ú”
  -C        Esjis::C    ÅŒã‚É iƒm[ƒh(inode) ‚ª•ÏX‚³‚ê‚Ä‚©‚ç‚Ì“ú”
  -s        Esjis::s    ƒtƒ@ƒCƒ‹‚âƒfƒBƒŒƒNƒgƒŠ‚ª‘¶Ý‚µ‚Ä‚¢‚Ä‘å‚«‚³‚ª 0 ‚Å‚È‚¢
                        (ƒoƒCƒg’PˆÊ‚Å•\‚킵‚½ƒtƒ@ƒCƒ‹‚Ì‘å‚«‚³‚ª’l‚É‚È‚é)
  -------------------------------------------------------------------------------
  
  MacOS ‚¨‚æ‚Ñ UNIX•—‚̃VƒXƒeƒ€‚Å—˜—p‰Â”\‚ȉ‰ŽZŽq
  -------------------------------------------------------------------------------
  ˆ—‘O    ˆ—Œã      à–¾
  -------------------------------------------------------------------------------
  -R        Esjis::R    ƒtƒ@ƒCƒ‹‚âƒfƒBƒŒƒNƒgƒŠ‚ª‚±‚ÌŽÀƒ†[ƒU‚Ü‚½‚̓Oƒ‹[ƒv‚©‚ç“ǂݏo‚µ‰Â”\
  -W        Esjis::W    ƒtƒ@ƒCƒ‹‚âƒfƒBƒŒƒNƒgƒŠ‚ª‚±‚ÌŽÀƒ†[ƒU‚Ü‚½‚̓Oƒ‹[ƒv‚©‚珑‚«ž‚݉”\
  -X        Esjis::X    ƒtƒ@ƒCƒ‹‚âƒfƒBƒŒƒNƒgƒŠ‚ª‚±‚ÌŽÀƒ†[ƒU‚Ü‚½‚̓Oƒ‹[ƒv‚©‚çŽÀs‰Â”\
  -l        Esjis::l    ƒGƒ“ƒgƒŠ‚̓Vƒ“ƒ{ƒŠƒbƒNƒŠƒ“ƒN‚Å‚ ‚é
  -S        Esjis::S    ƒGƒ“ƒgƒŠ‚̓\ƒPƒbƒg‚Å‚ ‚é
  -------------------------------------------------------------------------------
  
  MSWin32, MacOS ‚Å‚Í—˜—po—ˆ‚È‚¢ƒtƒ@ƒCƒ‹ƒeƒXƒg‰‰ŽZŽq
  -------------------------------------------------------------------------------
  ˆ—‘O    ˆ—Œã      à–¾
  -------------------------------------------------------------------------------
  -o        Esjis::o    ƒtƒ@ƒCƒ‹‚âƒfƒBƒŒƒNƒgƒŠ‚ð‚±‚Ì(ŽÀŒø)ƒ†[ƒU‚ªŠ—L‚µ‚Ä‚¢‚é
  -O        Esjis::O    ƒtƒ@ƒCƒ‹‚âƒfƒBƒŒƒNƒgƒŠ‚ð‚±‚ÌŽÀƒ†[ƒU‚ªŠ—L‚µ‚Ä‚¢‚é
  -p        Esjis::p    ƒGƒ“ƒgƒŠ‚Í–¼‘O•t‚«ƒpƒCƒv(fifo)‚Å‚ ‚é
  -b        Esjis::b    ƒGƒ“ƒgƒŠ‚̓uƒƒbƒN“ÁŽêƒfƒoƒCƒX‚Å‚ ‚é(—Ⴆ‚΁Aƒ}ƒEƒ“ƒg‰Â”\‚ȃfƒBƒXƒN)
  -c        Esjis::c    ƒGƒ“ƒgƒŠ‚̓Lƒƒƒ‰ƒNƒ^“ÁŽêƒfƒoƒCƒX‚Å‚ ‚é(—Ⴆ‚΁AI/OƒfƒoƒCƒX)
  -u        Esjis::u    ƒtƒ@ƒCƒ‹‚âƒfƒBƒŒƒNƒgƒŠ‚ª setuid ‚³‚ê‚Ä‚¢‚é
  -g        Esjis::g    ƒtƒ@ƒCƒ‹‚âƒfƒBƒŒƒNƒgƒŠ‚ª setgid ‚³‚ê‚Ä‚¢‚é
  -k        Esjis::k    ƒtƒ@ƒCƒ‹‚âƒfƒBƒŒƒNƒgƒŠ‚Ì sticky ƒrƒbƒg‚ªƒZƒbƒg‚³‚ê‚Ä‚¢‚é
  -------------------------------------------------------------------------------

perl5.00503 ‚ðŽg—p‚µ‚Ä‚¢‚éê‡‚Å‚àƒtƒ@ƒCƒ‹ƒeƒXƒg‰‰ŽZŽq‚́uÏ‚ݏd‚Ë‚év‚±‚Æ‚ª
‚Å‚«‚Ü‚·B

  if ( -w -r $file ) {
      print "The file is both readable and writable!\n";
  }

=head1 ŠÖ”–¼‚̃GƒXƒP[ƒv

‚à‚µ•¶ŽšŽwŒü‚̃Tƒuƒ‹[ƒ`ƒ“‚ðŽg‚¢‚½‚¢ê‡‚͈ȉº‚̂悤‚É‹Lq‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B
‚»‚ꂼ‚ê‚Ì‹@”\‚ɂ‚¢‚Ắu•¶ŽšŽwŒü‚̃Tƒuƒ‹[ƒ`ƒ“v‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B

  ----------------------------------------------------
  ŠÖ”–¼    •¶ŽšŽwŒü        à–¾
  ----------------------------------------------------
  ord       Sjis::ord
  reverse   Sjis::reverse
  getc      Sjis::getc
  length    Sjis::length
  substr    Sjis::substr
  index     Sjis::index     ˆÈ‰º‚Ì‹Lq‚àŽQÆ‚Ì‚±‚Æ
  rindex    Sjis::rindex    ˆÈ‰º‚Ì‹Lq‚àŽQÆ‚Ì‚±‚Æ
  ----------------------------------------------------

  index ‚Ì’‡ŠÔ‚½‚¿
  --------------------------------------------------------------
  ŠÖ”–¼         “®ì         •Ô’l         à–¾
  --------------------------------------------------------------
  index          •¶ŽšŽwŒü     ƒoƒCƒg’PˆÊ   JPerl‚Æ“¯‚¶“®ì
  Sjis::index    •¶ŽšŽwŒü     •¶Žš’PˆÊ     •¶ŽšŽwŒü‚Ì“®ì
  CORE::index    ƒoƒCƒgŽwŒü   ƒoƒCƒg’PˆÊ   ƒoƒCƒgŽwŒü‚Ì“®ì
  --------------------------------------------------------------

  rindex ‚Ì’‡ŠÔ‚½‚¿
  --------------------------------------------------------------
  ŠÖ”–¼         “®ì         •Ô’l         à–¾
  --------------------------------------------------------------
  rindex         •¶ŽšŽwŒü     ƒoƒCƒg’PˆÊ   JPerl‚Æ“¯‚¶“®ì
  Sjis::rindex   •¶ŽšŽwŒü     •¶Žš’PˆÊ     •¶ŽšŽwŒü‚Ì“®ì
  CORE::rindex   ƒoƒCƒgŽwŒü   ƒoƒCƒg’PˆÊ   ƒoƒCƒgŽwŒü‚Ì“®ì
  --------------------------------------------------------------

=head1 •¶ŽšŽwŒü‚̃Tƒuƒ‹[ƒ`ƒ“

=over 2

=item * Sjis::ord

    $ord = Sjis::ord($string);

    Sjis::ord($string) ‚Í $string ‚̐擪‚Ì•¶Žš‚Ì ShiftJIS ƒR[ƒh’l‚ð•Ô‚µ‚Ü‚·
    (Unicode ‚Å‚Í‚ ‚è‚Ü‚¹‚ñ)B$string ‚ªÈ—ª‚³‚ꂽê‡‚Í $_ ‚ª‘ΏۂƂȂè‚Ü‚·B
    ‚±‚̃Tƒuƒ‹[ƒ`ƒ“‚͏í‚É•„†‚È‚µ‚Ì’l‚ð•Ô‚µ‚Ü‚·B

    "use Sjis qw(ord);" ‚É‚æ‚Á‚ăXƒNƒŠƒvƒg’†‚É‹Lq‚µ‚½ ord ‚Í Sjis::ord ‚ɏ‘‚«
    Š·‚í‚é‚悤‚É‚È‚è‚Ü‚·Bord ‚ª Sjis::ord ‚Ì“®ì‚ð‚·‚é‚Ì‚Í JPerl ‚Æ”ñŒÝŠ·‚È‚Ì
    ‚Å–¾Ž¦“I‚ɃCƒ“ƒ|[ƒg‚µ‚½ê‡‚̂ݏ‘‚«Š·‚í‚è‚Ü‚·B

=item * Sjis::reverse

    @reverse = Sjis::reverse(@list);
    $reverse = Sjis::reverse(@list);

    Sjis::reverse(@list) ‚̓ŠƒXƒgƒRƒ“ƒeƒLƒXƒg‚Å‚Í @list ‚Ì—v‘f‚ð‹t‡‚É•À‚ׂ½
    ƒŠƒXƒg’l‚ð•Ô‚µ‚Ü‚·B

    ƒXƒJƒ‰[ƒRƒ“ƒeƒLƒXƒg‚Å‚Í @list ‚Ì‚·‚ׂĂ̗v‘f‚ð˜AŒ‹‚µ‚½ã‚ŁAShiftJIS ‚Ì
    •¶Žš’PˆÊ‚Å‹t‡‚É‚µ‚½‚à‚Ì‚ð•Ô‚µ‚Ü‚·B

    "use Sjis qw(reverse);" ‚É‚æ‚Á‚ăXƒNƒŠƒvƒg’†‚É‹Lq‚µ‚½ reverse ‚Í
    Sjis::reverse ‚ɏ‘‚«Š·‚í‚é‚悤‚É‚È‚è‚Ü‚·Breverse ‚ª Sjis::reverse ‚Ì“®ì‚ð
    ‚·‚é‚Ì‚Í JPerl ‚Æ”ñŒÝŠ·‚È‚Ì‚Å–¾Ž¦“I‚ɃCƒ“ƒ|[ƒg‚µ‚½ê‡‚̂ݏ‘‚«Š·‚í‚è‚Ü‚·B

    ‚à‚µ‚±‚̃Tƒuƒ‹[ƒ`ƒ“‚ð’m‚ç‚È‚­‚Æ‚à–â‘è‚Í‚ ‚è‚Ü‚¹‚ñB‚±‚ê‚Ü‚Å’Ê‚èA‚±‚̃Tƒu
    ƒ‹[ƒ`ƒ“‚Í

    $rev = join('', reverse(split(//, $jstring)));

    ‚ÅŽÀŒ»‚Å‚«‚Ü‚·B

    ŽQl:
    P.558 JPerl (“ú–{Œê‘ΉžPerl)
    •t˜^C “ú–{Œê”ł̒ljÁ
    ISBN 4-89052-384-7 PerlƒvƒƒOƒ‰ƒ~ƒ“ƒO

=item * Sjis::getc

    $getc = Sjis::getc(FILEHANDLE);
    $getc = Sjis::getc($filehandle);
    $getc = Sjis::getc;

    FILEHANDLE ‚ÉŒ‹‚т‚¯‚ç‚ꂽ“ü—̓tƒ@ƒCƒ‹‚©‚çAŽŸ‚Ì1•¶Žš‚ð“Ç‚ñ‚Å•Ô‚µ‚Ü‚·B
    end-of-file(ƒtƒ@ƒCƒ‹‚̏I‚í‚è) ‚É‚È‚Á‚½‚©A‚ ‚é‚¢‚Í I/O ƒGƒ‰[‚ª”­¶‚µ‚½ê‡‚É
    ‚́Aundef ‚ð•Ô‚µ‚Ü‚·BFILEHANDLE ‚ðÈ—ª‚·‚é‚ƁASTDIN ‚©‚ç“ü—Í‚µ‚Ü‚·B

    ‚±‚̃Tƒuƒ‹[ƒ`ƒ“‚͏­‚µ’x‚¢‚à‚̂́AƒL[ƒ{[ƒh‚©‚ç1•¶Žš‚ð“ü—Í‚·‚éÛ‚É•Ö—˜‚Å‚·
    -- ƒL[ƒ{[ƒh“ü—Í‚ðƒoƒbƒtƒ@ƒŠƒ“ƒO‚È‚µ‚ɐݒè‚Å‚«‚ê‚΂ł·‚ªB‚±‚̃Tƒuƒ‹[ƒ`ƒ“‚́A
    •W€I/Oƒ‰ƒCƒuƒ‰ƒŠ‚ɑ΂µ‚āAƒoƒbƒtƒ@ƒŠƒ“ƒO‚È‚µ‚Å“ü—Í‚·‚é‚悤‚É—v‹‚µ‚Ü‚·BŽc”O‚È
    ‚±‚ƂɁA•W€I/Oƒ‰ƒCƒuƒ‰ƒŠ‚́AƒIƒyƒŒ[ƒeƒBƒ“ƒOƒVƒXƒeƒ€‚ɑ΂µ‚ăoƒbƒtƒ@ƒŠƒ“ƒO‚È‚µ
    ‚ŃL[ƒ{[ƒh“ü—Í‚ðs‚¤‚悤‚É—v‹‚·‚邽‚߂́AˆÚA«‚Ì‚ ‚éŽè’i‚ð—pˆÓ‚·‚é‚܂łɂ́A
    •W€‰»‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB‚»‚ê‚ɂ́A­X’mŒb‚ð“­‚©‚¹‚āAƒIƒyƒŒ[ƒeƒBƒ“ƒOƒVƒXƒeƒ€‚É
    ŒÅ—L‚Ì‚â‚è•û‚ð‚·‚é•K—v‚ª‚ ‚è‚Ü‚·BUnix ‚ł́AŽŸ‚̂悤‚É‚·‚ê‚΂¤‚Ü‚­‚¢‚­‚Å‚µ‚傤B

    if ($BSD_STYLE) {
        system "stty cbreak </dev/tty >/dev/tty 2>&1";
    }
    else {
        system "stty", "-icanon", "eol", "\001";
    }

    $key = Sjis::getc;

    if ($BSD_STYLE) {
        system "stty -cbreak </dev/tty >/dev/tty 2>&1";
    }
    else {
        system "stty", "icanon", "eol", "^@"; # ASCII NUL
    }
    print "\n";

    ‚±‚̃R[ƒh‚́A’[––‚©‚玟‚Ƀ^ƒCƒv‚³‚ꂽ•¶Žš‚ð•Ï” $key ‚É“ü‚ê‚Ü‚·B‚ ‚È‚½‚̃VƒXƒe
    ƒ€‚Ì stty ƒvƒƒOƒ‰ƒ€‚É cbreak ƒIƒvƒVƒ‡ƒ“‚ª‚ ‚é‚È‚çAã‚̃R[ƒh‚Ì‚¤‚¿A$BSD_STYLE
    ‚ª^‚̏ꍇ‚̃R[ƒh‚ðŽg‚¤‚Æ—Ç‚¢‚Å‚µ‚傤B‚»‚¤‚Å‚È‚¯‚ê‚΁A$BSD_STYLE ‚ª‹U‚̏ꍇ‚Ì
    ƒR[ƒh‚ðŽg‚¦‚΂悢‚Å‚µ‚傤B

    "use Sjis qw(getc);" ‚É‚æ‚Á‚ăXƒNƒŠƒvƒg’†‚É‹Lq‚µ‚½ getc ‚Í Sjis::getc ‚ɏ‘‚«
    Š·‚í‚é‚悤‚É‚È‚è‚Ü‚·Bgetc ‚ª Sjis::getc ‚Ì“®ì‚ð‚·‚é‚Ì‚Í JPerl ‚Æ”ñŒÝŠ·‚È‚Ì
    ‚Å–¾Ž¦“I‚ɃCƒ“ƒ|[ƒg‚µ‚½ê‡‚̂ݏ‘‚«Š·‚í‚è‚Ü‚·B

=item * Sjis::length

    $length = Sjis::length($string);
    $length = Sjis::length();

    Sjis::length($string) ‚̓XƒJƒ‰[’l $string ‚Ì’·‚³‚ð ShiftJIS ‚Ì•¶Žš”(ƒvƒƒO
    ƒ‰ƒ}‚©‚猩‚¦‚镶Žš)‚Å•Ô‚µ‚Ü‚·B$string ‚ðÈ—ª‚µ‚½ê‡‚Í $_ ‚Ì•¶Žš”‚ð•Ô‚µ‚Ü
    ‚·B

    ”z—ñ‚â˜A‘z”z—ñ(ƒnƒbƒVƒ…)‚Ì‘å‚«‚³‚ð’m‚肽‚¢ê‡‚ɂ́ASjis::length ‚ÍŽg‚¦‚Ü
    ‚¹‚ñB”z—ñ‚Ì‘å‚«‚³‚ð’m‚é‚É‚Í scalar @arrayA˜A‘z”z—ñ‚É“ü‚Á‚Ä‚¢‚éƒL[/’l‚̃y
    ƒA‚̌”‚ð’m‚é‚É‚Í scalar keys %hash ‚Æ‚µ‚Ü‚·B

    •¶Žš”‚Å‚Í‚È‚­ƒoƒCƒg’PˆÊ‚Å‚Ì’·‚³‚𒲂ׂé‚ɂ́A‚¢‚Ü‚Ü‚Å’Ê‚è

    $bytes = length($string);

    ‚̂悤‚É‚µ‚Ü‚·B

    ‚à‚µ‚±‚̃Tƒuƒ‹[ƒ`ƒ“‚ð’m‚ç‚È‚­‚Æ‚à–â‘è‚Í‚ ‚è‚Ü‚¹‚ñB‚±‚ê‚Ü‚Å’Ê‚èA‚±‚̃Tƒuƒ‹[
    ƒ`ƒ“‚Í

    $len = split(//, $jstring);

    ‚ÅŽÀŒ»‚Å‚«‚Ü‚·B

    ŽQl:
    P.558 JPerl (“ú–{Œê‘ΉžPerl)
    •t˜^C “ú–{Œê”ł̒ljÁ
    ISBN 4-89052-384-7 PerlƒvƒƒOƒ‰ƒ~ƒ“ƒO

=item * Sjis::substr

    $substr = Sjis::substr($string,$offset,$length,$replacement);
    $substr = Sjis::substr($string,$offset,$length);
    $substr = Sjis::substr($string,$offset);

    Sjis::substr ‚́AShiftJIS •¶Žš—ñ $string ‚ÅŽw’肳‚ꂽ•¶Žš—ñ‚©‚ç•”•ª•¶Žš—ñ‚ðŽæ‚è
    o‚µ‚Ä•Ô‚µ‚Ü‚·B•”•ª•¶Žš—ñ‚́A•¶Žš—ñ‚̐擪‚©‚琔‚¦‚Ä $offset •¶Žš–Ú‚©‚çŽn‚Ü‚éA
    $length •¶Žš•ª‚Å‚·BÅ‰‚Ì•¶Žš‚ªƒIƒtƒZƒbƒg 0 ‚Æ‚È‚è‚Ü‚·B$offset ‚É•‰‚Ì’l‚ðÝ’è
    ‚·‚é‚ƁA$string ‚̏I‚í‚è‚©‚ç‚̃IƒtƒZƒbƒg‚Æ‚È‚è‚Ü‚·B
    $length ‚ðÈ—ª‚·‚é‚ƁA$string ‚̍Ōã‚Ü‚Å‚·‚ׂĂª•Ô‚³‚ê‚Ü‚·B$length ‚ª•‰‚Ì’l‚¾
    ‚ƁA•¶Žš—ñ‚̍Ōォ‚çŽw’肳‚ꂽ”‚¾‚¯•¶Žš‚ðŽæ‚菜‚«‚Ü‚·B‚»‚¤‚Å‚È‚¯‚ê‚΁A$length
    ‚́A‚ ‚È‚½‚ªŠú‘Ò‚·‚é‚悤‚ɁAŽæ‚èo‚·•”•ª•¶Žš—ñ‚Ì’·‚³‚ð•\‚µ‚Ä‚¢‚Ü‚·B

    my $s = "The black cat climbed the green tree";
    my $color  = Sjis::substr $s, 4, 5;      # black
    my $middle = Sjis::substr $s, 4, -11;    # black cat climbed the
    my $end    = Sjis::substr $s, 14;        # climbed the green tree
    my $tail   = Sjis::substr $s, -4;        # tree
    my $z      = Sjis::substr $s, -4, 2;     # tr

    ƒo[ƒWƒ‡ƒ“ 5.14 ˆÈ~‚Ì Perl ‚Å‚ ‚ê‚΁ASjis::substr() ‚ð¶•Ó’l‚Æ‚µ‚ÄŽg—p‚·‚邱‚Æ‚à
    ‰Â”\‚Å‚·B‚»‚̏ꍇ‚ɂ́A$string ‚ªŽ©g¶•Ó’l‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB$length ‚æ‚è’Z‚¢
    ‚à‚Ì‚ð‘ã“ü‚µ‚½‚Æ‚«‚ɂ́A$string ‚Í’Z‚­‚È‚èA$length ‚æ‚è’·‚¢‚à‚Ì‚ð‘ã“ü‚µ‚½‚Æ‚«‚ɂ́A
    $string ‚Í‚»‚ê‚ɍ‡‚킹‚ĐL‚т邱‚Æ‚É‚È‚è‚Ü‚·B$string ‚Ì’·‚³‚ðˆê’è‚ɕۂ‚½‚߂ɂ́A
    sprintf ‚ðŽg‚Á‚āA‘ã“ü‚·‚é’l‚Ì’·‚³‚𒲐®‚·‚邱‚Æ‚ªA•K—v‚É‚È‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB

    $offset ‚Æ $length ‚Æ‚µ‚Ä•¶Žš—ñ‚ÌŠO‘¤‚ðŠÜ‚ނ悤‚È•”•ª•¶Žš—ñ‚ªŽw’肳‚ê‚é‚ƁA•¶Žš—ñ
    ‚Ì“à‘¤‚Ì•”•ª‚¾‚¯‚ª•Ô‚³‚ê‚Ü‚·B•”•ª•¶Žš—ñ‚ª•¶Žš—ñ‚Ì—¼’[‚ÌŠO‘¤‚̏ꍇASjis::substr()
    ‚Í–¢’è‹`’l‚ð•Ô‚µAŒx‚ªo—Í‚³‚ê‚Ü‚·B¶•Ó’l‚Æ‚µ‚ÄŽg‚Á‚½ê‡A•¶Žš—ñ‚ÌŠ®‘S‚ÉŠO‘¤‚ð
    •”•ª•¶Žš—ñ‚Æ‚µ‚ÄŽw’è‚·‚é‚Æ—áŠO‚ª”­¶‚µ‚Ü‚·BˆÈ‰º‚Í‹«ŠEðŒ‚̐U‚é•‘‚¢‚ðŽ¦‚·—á‚Å‚·:

    my $name = 'fred';
    Sjis::substr($name, 4) = 'dy';         # $name is now 'freddy'
    my $null = Sjis::substr $name, 6, 2;   # returns "" (no warning)
    my $oops = Sjis::substr $name, 7;      # returns undef, with warning
    Sjis::substr($name, 7) = 'gap';        # raises an exception

    Sjis::substr() ‚ð¶•Ó’l‚Æ‚µ‚ÄŽg‚¤‘ã‚í‚è‚Ì•û–@‚́A’u‚«Š·‚¦‚镶Žš—ñ‚ð 4 ”Ԗڂ̈ø”‚Æ
    ‚µ‚ÄŽw’è‚·‚邱‚Æ‚Å‚·B‚±‚ê‚É‚æ‚èA$string ‚̈ꕔ‚ð’u‚«Š·‚¦A’u‚«Š·‚¦‚é‘O‚ª‰½‚Å‚ ‚Á
    ‚½‚©‚ð•Ô‚·A‚Æ‚¢‚¤‚±‚Æ‚ð(splice() ‚Æ“¯—l) 1 “®ì‚ōs‚¦‚Ü‚·B

    my $s = "The black cat climbed the green tree";
    my $z = Sjis::substr $s, 14, 7, "jumped from";    # climbed
    # $s is now "The black cat jumped from the green tree"

    3 ˆø”‚Ì Sjis::substr() ‚É‚æ‚Á‚Ä•Ô‚³‚ꂽ¶•Ó’l‚́u–‚–@‚Ì’eŠÛv‚̂悤‚ɐU•‘‚¤‚±‚Æ‚É
    ’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢; ‚±‚ꂪ‘ã“ü‚³‚ê‚é–ˆ‚ɁAŒ³‚Ì•¶Žš—ñ‚Ì‚Ç‚Ì•”•ª‚ª•ÏX‚³‚ꂽ‚©‚ªŽv‚¢
    o‚³‚ê‚Ü‚·; —Ⴆ‚Î:

    $x = '1234';
    for (Sjis::substr($x,1,2)) {
        $_ = 'a';   print $x,"\n";    # prints 1a4
        $_ = 'xyz'; print $x,"\n";    # prints 1xyz4
        $x = '56789';
        $_ = 'pq';  print $x,"\n";    # prints 5pq9
    }

    •‰”‚̃IƒtƒZƒbƒg‚̏ꍇAƒ^[ƒQƒbƒg•¶Žš—ñ‚ªC³‚³‚ꂽ‚Æ‚«‚É•¶Žš—ñ‚Ì––”ö‚©‚ç‚̈ʒu
    ‚ðŠo‚¦‚Ü‚·:

    $x = '1234';
    for (Sjis::substr($x, -3, 2)) {
        $_ = 'a';   print $x,"\n";    # prints 1a4, as above
        $x = 'abcdefg';
        print $_,"\n";                # prints f
    }

    ƒo[ƒWƒ‡ƒ“ 5.10 ‚æ‚è‘O‚Ì Perl ‚ł́A•¡”‰ñ¶•Ó’l‚ðŽg‚Á‚½ê‡‚ÌŒ‹‰Ê‚Í –¢’è‹`‚Å‚µ‚½B
    5.16 ‚æ‚è‘O‚ł́A•‰‚̃IƒtƒZƒbƒg‚ÌŒ‹‰Ê‚Í–¢’è‹`‚Å‚·B

=item * Sjis::index

    $index = Sjis::index($string,$substring,$offset);
    $index = Sjis::index($string,$substring);

    Sjis::index ‚́AShiftJIS •¶Žš—ñ $string ‚Ì’†‚ÉŠÜ‚Ü‚ê‚éA‚à‚¤1‚Â‚Ì ShiftJIS •¶
    Žš—ñ $substring ‚ð’T‚µ‚Ü‚·B$string ‚Ì’†‚ŁA$substring ‚ªÅ‰‚ɏoŒ»‚·‚éˆÊ’u‚ð
    •¶Žš’PˆÊ‚Ő”‚¦‚Ä•Ô‚µ‚Ü‚·B$offset ‚ªŽw’肳‚ê‚Ä‚¢‚éê‡A$string ‚̐擪‚©‚ç $offset
    ŒÂ‚Ì•¶Žš‚ðƒXƒLƒbƒv‚µ‚½ˆÊ’u‚©‚çA$substring ‚ð’T‚µŽn‚ß‚Ü‚·BˆÊ’u‚Í 0 ‚ðƒx[ƒX‚Æ‚µ
    ‚Đ”‚¦‚Ü‚·B$substring ‚ªŒ©‚‚©‚ç‚È‚¯‚ê‚΁ASjis::index ƒTƒuƒ‹[ƒ`ƒ“‚̓x[ƒX‚æ‚è
    1 ‚¾‚¯¬‚³‚¢’l -1 ‚ð•Ô‚µ‚Ü‚·BSjis::index ‚ðŽg‚Á‚āA•¶Žš—ñ‘S‘̂𒲂ׂé‚ɂ́AŽŸ‚Ì
    ‚悤‚É‚µ‚Ü‚·B

    $pos = -1;
    while (($pos = Sjis::index($string, $lookfor, $pos)) > -1) {
        print "Found at $pos\n";
        $pos++;
    }

=item * Sjis::rindex

    $rindex = Sjis::rindex($string,$substring,$offset);
    $rindex = Sjis::rindex($string,$substring);

    Sjis::rindex ‚Í Sjis::index ‚ÆŽ—‚Ä‚¢‚Ü‚·‚ªAShiftJIS •¶Žš—ñ $string ‚Ì’†‚ŁA
    •”•ª•¶Žš—ñ $substring ‚ªÅŒã‚ɏoŒ»‚·‚éˆÊ’u‚𕶎š’PˆÊ‚Ő”‚¦‚Ä•Ô‚µ‚Ü‚·(‚‚܂è
    reverse Sjis::index ‚Å‚·)B$substring ‚ªŒ©‚‚©‚ç‚È‚¯‚ê‚΁A-1 ‚ð•Ô‚µ‚Ü‚·B
    $offset ‚É‚æ‚Á‚āA’l‚Æ‚µ‚Ä•Ô‚·‚±‚Æ‚ª‹–‚³‚ê‚éAÅ‚à‰E‚æ‚è‚̈ʒu‚ðŽw’è‚·‚邱‚Æ
    ‚ª‚Å‚«‚Ü‚·BSjis::rindex ‚ðŽg‚Á‚āA•¶Žš—ñ‘S‘Ì‚ð––”ö‚©‚çæ“ª‚ÉŒü‚©‚Á‚Ä’²‚ׂé‚É
    ‚́AŽŸ‚̂悤‚É‚µ‚Ü‚·B

    $pos = Sjis::length($string);
    while (($pos = Sjis::rindex($string, $lookfor, $pos)) >= 0) {
        print "Found at $pos\n";
        $pos--;
    }

=item * Sjis::eval

    $eval = Sjis::eval { block };
    $eval = Sjis::eval $expr;
    $eval = Sjis::eval;

    JPerl ‚É‚¨‚¢‚ẮASjis::eval ƒL[ƒ[ƒh‚́A“Æ—§‚µ‚Ä‚¢‚Ü‚·‚ªAŠÖ˜A«‚Ì‚ ‚é2‚Â
    ‚Ì–Ú“I‚ÉŽg—p‚³‚ê‚Ä‚¢‚Ü‚·B‚±‚ê‚ç2‚‚̖ړI‚ɍ‡‚킹‚āA2‚‚̌`Ž® Sjis::eval
    { block } ‚Æ Sjis::eval $expr ‚ª—pˆÓ‚³‚ê‚Ä‚¢‚Ü‚·B1”Ô–Ú‚ÌŒ`Ž® Sjis::eval
    { block } ‚́A‚»‚Ì‚Ü‚Ü‚Å‚Í’v–½“I‚Å‚ ‚é‚悤‚ÈŽÀsŽž—áŠO(ƒGƒ‰[)‚ðƒgƒ‰ƒbƒv‚·‚é
    ‚½‚ß‚Ì‚à‚̂ŁAC++ ‚â Java ‚Ì "tryƒuƒƒbƒN" ‚ÉŽ—‚Ä‚¢‚Ü‚·B2”Ô–Ú‚ÌŒ`Ž®
    Sjis::eval $expr ‚́AŽÀsŽž‚ɃR[ƒh‚ðƒRƒ“ƒpƒCƒ‹‚µ‚ÄŽÀs‚·‚é‚Æ‚Æ‚à‚ɁA1”Ô–Ú‚Ì
    Œ`Ž®‚Æ“¯‚¶‚悤‚ɁA”­¶‚µ‚½—áŠO‚ðƒgƒ‰ƒbƒv‚µ‚Ü‚·B‚µ‚©‚µASjis::eval $expr ‚Ì
    ‚Ù‚¤‚ª Sjis::eval { block } ‚æ‚è‚à‚©‚È‚èŽÀs‚ª’x‚­‚È‚è‚Ü‚·B‚È‚º‚È‚çA
    Sjis::eval $expr ‚́A–ˆ‰ñ•¶Žš—ñ‚ðƒp[ƒX‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢‚©‚ç‚Å‚·B‚»‚̈ê•û‚ŁA
    Sjis::eval $expr ‚Ì‚Ù‚¤‚ª‚æ‚è”Ä—p«‚ª‚‚­‚È‚è‚Ü‚·B‚Ç‚¿‚ç‚ÌŒ`Ž®‚ðŽg‚¤‚É‚¹‚æA
    JPerl ‚É‚¨‚¢‚ẮA‚·‚ׂĂ̗áŠOˆ—‚É‚Í Sjis::eval ‚ð—˜—p‚·‚邱‚Æ‚ª–]‚Ü‚µ‚¢
    ‚Å‚·B

    ‚Ç‚¿‚ç‚ÌŒ`Ž®‚Ì Sjis::eval ‚Å‚àAƒTƒuƒ‹[ƒ`ƒ“‚Æ“¯‚¶‚悤‚ɁAÅŒã‚É•]‰¿‚µ‚½Ž®‚Ì
    ’l‚ª Sjis::eval ‚Ì’l‚Æ‚µ‚Ä•Ô‚³‚ê‚Ü‚·B‚Ü‚½“¯—l‚ɁAreturn ‰‰ŽZŽq‚ðŽg‚¤‚±‚Æ‚É
    ‚æ‚Á‚āASjis::eval ‚Ì“r’†‚©‚ç’l‚ð•Ô‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·BSjis::eval ‚Ì–ß‚è’l‚ð’ñ
    ‹Ÿ‚·‚鎮‚́ASjis::eval Ž©‘̂̃Rƒ“ƒeƒLƒXƒg‚ɉž‚¶‚āA–³ŒøƒRƒ“ƒeƒLƒXƒgAƒXƒJƒ‰[
    ƒRƒ“ƒeƒLƒXƒgA‚Ü‚½‚̓ŠƒXƒgƒRƒ“ƒeƒLƒXƒg‚Å•]‰¿‚³‚ê‚Ü‚·B•]‰¿‚ªs‚í‚ê‚éƒRƒ“ƒeƒL
    ƒXƒg‚ð’m‚é•û–@‚ɂ‚¢‚ẮAwantarray ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B

    ƒgƒ‰ƒbƒv‰Â”\‚ȃGƒ‰[(die ‰‰ŽZŽq‚Å”­¶‚³‚¹‚½ƒGƒ‰[‚àŠÜ‚Þ)‚ª”­¶‚·‚é‚ƁA
    Sjis::eval ‚Í underf ‚ð•Ô‚µA•Ï” $@ ‚ɃGƒ‰[ƒƒbƒZ[ƒW(‚Ü‚½‚̓IƒuƒWƒFƒNƒg)‚ð
    ƒZƒbƒg‚µ‚Ü‚·BƒGƒ‰[‚ª”­¶‚µ‚È‚¯‚ê‚΁A$@ ‚ª‹ó•¶Žš—ñ‚ɂȂ邱‚Æ‚ª•ÛØ‚³‚ê‚Ä‚¢
    ‚Ü‚·B‚¾‚©‚çASjis::eval ‚ÌŒã‚Å $@ ‚Ì’l‚𒲂ׂê‚΁AƒGƒ‰[‚Ì—L–³‚ðŠmŽÀ‚É”»’è
    ‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·BŽÀÛ‚ɂ́AŽŸ‚̂悤‚È’Pƒ‚ȃu[ƒ‹’l‚̃eƒXƒg‚ŏ\•ª‚Å‚·:

        Sjis::eval { ... }; # ŽÀsŽžƒGƒ‰[‚ðƒgƒ‰ƒbƒv‚·‚é
        if ($@) { ... }     # ƒGƒ‰[ˆ—‚ðs‚¤

    (Perl 5.16 ˆÈ‘O‚ł́AƒoƒO‚É‚æ‚Á‚āAƒŠƒXƒgƒRƒ“ƒeƒLƒXƒg‚ō\•¶ƒGƒ‰[‚ÌŽž‚É‚Í undef
    ‚ð•Ô‚µ‚Ä‚¢‚Ü‚µ‚½‚ªAŽÀsƒGƒ‰[‚ÌŽž‚É‚Í•Ô‚µ‚Ä‚¢‚Ü‚¹‚ñ‚Å‚µ‚½)B

    Sjis::eval { block } Œ`Ž®‚́AƒRƒ“ƒpƒCƒ‹Žž‚ɍ\•¶ƒ`ƒFƒbƒN‚ðs‚¤‚½‚߂ɁA”ñí‚ÉŒø
    —¦‚ª—Ç‚­‚È‚è‚Ü‚·B(’x‚¢ Sjis::eval $expr Œ`Ž®‚ÉŠµ‚ê‚Ä‚¢‚él‚́A‚±‚Ì“_‚ɂ‚¢‚Ä
    Œë‰ð‚µ‚Ä‚¢‚邱‚Æ‚ª‘½‚¢‚悤‚Å‚·B) { block } “à‚̃R[ƒh‚́A‰ñ‚è‚̃R[ƒh‚Æ“¯Žž‚É
    ƒRƒ“ƒpƒCƒ‹‚³‚ê‚é‚̂ŁA‚±‚ÌŒ`Ž®‚Ì Sjis::eval ‚ł͍\•¶ƒGƒ‰[‚ðƒgƒ‰ƒbƒv‚·‚邱‚Æ‚Í
    ‚Å‚«‚Ü‚¹‚ñB

    Sjis::eval $expr Œ`Ž®‚́AŽÀsŽž‚ɃR[ƒh‚ðƒp[ƒX‚·‚é‚̂ŁA\•¶ƒGƒ‰[‚ðƒgƒ‰ƒbƒv
    ‚·‚邱‚Æ‚ª‰Â”\‚Å‚·B(ƒp[ƒX‚ÉŽ¸”s‚·‚é‚ƁA—á‚É‚æ‚Á‚ăGƒ‰[ƒƒbƒZ[ƒW‚ª $@ ‚É
    ƒZƒbƒg‚³‚ê‚Ü‚·B) $expr ‚ªÈ—ª‚³‚ê‚é‚ƁA$_ ‚ð•]‰¿‚µ‚Ü‚·B

    \•¶ƒGƒ‰[‚ª‚È‚¯‚ê‚΁AŽ® $expr ‚Ì’l‚ðA¬‚³‚È JPerl ƒXƒNƒŠƒvƒg‚̂悤‚É‚µ‚ÄŽÀs
    ‚µ‚Ü‚·B‚±‚Ì‚Æ‚«ƒR[ƒh‚́A‚»‚ÌŽž“_‚Ì JPerl ƒXƒNƒŠƒvƒg‚̃Rƒ“ƒeƒLƒXƒg‚ÅŽÀs‚³‚ê
    ‚Ü‚·B‚¾‚©‚çASjis::eval ‚ÅŽÀs‚³‚ê‚éƒR[ƒh‚©‚ç‚́A‰ñ‚è‚ðŽæ‚èˆÍ‚ÞƒXƒR[ƒv‚̃ŒƒL
    ƒVƒJƒ‹•Ï”‚ðŒ©‚é‚±‚Æ‚ª‚Å‚«A(Sjis::eval ‚Ì’†‚ōs‚Á‚½)”ñƒ[ƒJƒ‹‚ȕϐ”‚Ö‚Ì‘ã“üA
    ƒTƒuƒ‹[ƒ`ƒ“‚âƒtƒH[ƒ}ƒbƒg‚Ì’è‹`‚́ASjis::eval ‚ªI—¹‚µ‚½Œã‚à—LŒø‚Å‚·B
    Sjis::eval ‚̃R[ƒh‚̓uƒƒbƒN‚Æ‚µ‚Ĉµ‚í‚ê‚é‚̂ŁASjis::eval “à‚Ő錾‚µ‚½ƒ[ƒJ
    ƒ‹‚ȃXƒR[ƒv‚ðŽ‚Â•Ï”‚́ASjis::eval ‚ªI—¹‚·‚é‚Ü‚Å—LŒø‚Å‚·B(local‚Æmy‚ðŽQÆ‚Ì
    ‚±‚ƁB)ƒuƒƒbƒN“à‚É’u‚©‚ꂽƒR[ƒh‚̏ꍇ‚Æ“¯—l‚ɁAˆê”ԍŌã‚̃Zƒ~ƒRƒƒ“‚͏Ȃ¢‚Ä‚à
    \‚¢‚Ü‚¹‚ñB

    Sjis::eval ‚͈ȉº‚̂悤‚ɃGƒXƒP[ƒv‚³‚ê‚Ü‚·:

    -------------------------------------------------
    ˆ—‘O                  ˆ—Œã
    -------------------------------------------------
    Sjis::eval { block }    eval { block }
    Sjis::eval $expr        eval Sjis::escape $expr
    Sjis::eval              eval Sjis::escape
    -------------------------------------------------

    Sjis::eval ‚Æ‚¢‚¤ƒTƒuƒ‹[ƒ`ƒ“‚ÍŽÀ‚Í‘¶Ý‚µ‚Ü‚¹‚ñB‚à‚µ‘¶Ý‚µ‚Ä‚¢‚½‚Æ‚·‚é‚ƁAmy
    ‚Ő錾‚³‚ꂽ•Ï”‚ðƒVƒ“ƒOƒ‹ƒNƒH[ƒg‚ň͂݁ASjis::eval ‚̃pƒ‰ƒ[ƒ^‚É‚µ‚½‚Æ‚«‚É
    ¢‚é‚©‚ç‚Å‚·BSjis::escape ‚Í JPerl ƒXƒNƒŠƒvƒg‚ð Perl ƒXƒNƒŠƒvƒg‚ɃGƒXƒP[ƒv‚·
    ‚éƒTƒuƒ‹[ƒ`ƒ“‚Å‚·B

    ŽŸ‚ÉŽ¦‚·‚Ì‚ÍŠÈ’P‚È JPerl ƒVƒFƒ‹‚Ì—á‚Å‚·BJPerl ‚̃R[ƒh‚ð“ü—Í‚·‚é‚悤‚Ƀ†[ƒU
    ‚ɑ΂µ‚ăvƒƒ“ƒvƒg‚ð•\Ž¦‚µ‚āA“ü—Í‚³‚ꂽ•¶Žš—ñ‚ðƒRƒ“ƒpƒCƒ‹‚µ‚Ä‚©‚çŽÀs‚µ‚āA”­
    ¶‚µ‚½ƒGƒ‰[‚ð•\Ž¦‚µ‚Ü‚·:

        #!/usr/bin/perl
        # jperlshell.pl - ŠÈ’P‚È JPerl ƒVƒFƒ‹
        use Sjis;
        print "\nEnter some JPerl code: ";
        while (<STDIN>) {
            Sjis::eval;
            print $@;
            print "\nEnter some more JPerl code: ";
        }

    ŽŸ‚̃XƒNƒŠƒvƒg rename.pl ‚́AJPerl ‚ÌŽ®‚Æ‚µ‚Ä—^‚¦‚ç‚ꂽŽwŽ¦‚ÉŠî‚¢‚āA‘å—Ê‚Ì
    ƒtƒ@ƒCƒ‹‚ðƒŠƒl[ƒ€‚µ‚Ü‚·:

        #!/usr/bin/perl
        # rename.pl - ƒtƒ@ƒCƒ‹‚Ì–¼‘O‚ð•ÏX‚·‚é
        use Sjis;
        $op = shift;
        for (@ARGV) {
            $was = $_;
            Sjis::eval $op;
            die if $@;
            # ŽŸ‚̍s‚̓XƒNƒŠƒvƒg rename.pl ‚Å‚Í‚È‚­A
            # ‘g‚ݍž‚݊֐” rename ‚ðŒÄ‚яo‚·
            if ($was ne $_) {
                print STDERR "rename $was --> $_\n";
                rename($was,$_);
            }
        }

    ‚±‚̃XƒNƒŠƒvƒg‚́AˆÈ‰º‚̂悤‚É‚µ‚ÄŽg—p‚µ‚Ü‚·:

        C:\WINDOWS> perl rename.pl 's/\.orig$//' *.orig
        C:\WINDOWS> perl rename.pl 'y/A-Z/a-z/ unless /^Make/' *
        C:\WINDOWS> perl rename.pl '$_ .= ".bad"' *.f

    Sjis::eval ‚ðŽg‚¦‚΁A‚»‚Ì‚Ü‚Ü‚Å‚Í’v–½“I‚É‚È‚é‚悤‚ȃGƒ‰[‚ðƒgƒ‰ƒbƒv‚·‚邱‚Æ‚ª
    ‚Å‚«‚é‚̂ŁA‚ ‚é‹@”\(—Ⴆ‚Î fork ‚â symlink)‚ªŽÀ‘•‚³‚ê‚Ä‚¢‚é‚©‚Ç‚¤‚©‚ðŠm”F‚·
    ‚é‚Ì‚É•Ö—˜‚Å‚·B

    Sjis::eval { block } Œ`Ž®‚ł̓Rƒ“ƒpƒCƒ‹Žž‚É•¶–@ƒ`ƒFƒbƒN‚ªs‚í‚ê‚é‚̂ŁA‚·‚ׂÄ
    •¶–@ƒGƒ‰[‚Í(Sjis::eval $expr Œ`Ž®‚æ‚è‚à)‘Šú‚É”­Œ©‚³‚ê‚Ü‚·B‚µ‚½‚ª‚Á‚āA‘ΏÛ
    ‚Æ‚È‚éƒR[ƒh‚ª•s•Ï‚ŁASjis::eval $expr ‚Æ Sjis::eval { block } ‚Ì‚Ç‚¿‚ç‚à‚ ‚È
    ‚½‚Ì–Ú“I‚É“K‚µ‚Ä‚¢‚éê‡‚ɂ́ASjis::eval { block } ‚ðŽg‚¤‚±‚Æ‚ª–]‚Ü‚ê‚Ü‚·B
    —Ⴆ‚΁AŽŸ‚Ì—á‚ðŒ©‚Ä‚­‚¾‚³‚¢:

        # 0 ‚É‚æ‚鏜ŽZ‚ð’v–½“I‚Å‚È‚¢‚悤‚É‚·‚é
        Sjis::eval { $answer = $a / $b; };
        warn $@ if $@;

        # “¯‚¶‚±‚Æ‚¾‚ªA‰½‰ñ‚àŽÀs‚·‚éê‡‚É‚ÍŒø—¦‚ªˆ«‚¢
        Sjis::eval '$answer = $a / $b';
        warn $@ if $@;

        # ƒRƒ“ƒpƒCƒ‹Žž‚Ì•¶–@ƒGƒ‰[(ƒgƒ‰ƒbƒv‚³‚ê‚È‚¢)
        Sjis::eval { $answer = }; # Œë‚è

        # ŽÀsŽž‚Ì•¶–@ƒGƒ‰[
        Sjis::eval '$answer =';   # ƒGƒ‰[ƒƒbƒZ[ƒW‚ª $@ ‚ɃZƒbƒg‚³‚ê‚é

    ‚±‚±‚ŁAƒRƒ“ƒpƒCƒ‹‚ª¬Œ÷‚·‚邽‚߂ɂ́A{ block } “à‚̃R[ƒh‚͐³‚µ‚¢ JPerl ƒR[
    ƒh‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB$expr ‚É“ü‚Á‚Ä‚¢‚éƒR[ƒh‚ÍŽÀsŽž‚܂Ń`ƒFƒbƒN‚³‚ê‚È‚¢
    ‚̂ŁAŽÀsŽž‚É‚È‚ç‚È‚¯‚ê‚΃Gƒ‰[‚Í”­¶‚µ‚Ü‚¹‚ñB

    Sjis::eval { block } Œ`Ž®‚ðƒ‰ƒCƒuƒ‰ƒŠ‚Ì—áŠO‚ð•ß‘¨‚·‚邽‚ß‚ÉŽg‚¤‚Æ‚«‚É‚Í–â‘肪
    ‚ ‚è‚Ü‚·BŒ»Ý‚Ì __DIE__ ƒtƒbƒN‚̏ó‘Ô‚Í‚Ù‚ÚŠmŽÀ‚ɉó‚ê‚Ä‚¢‚é‚Æ‚¢‚¤——R‚ŁAƒ†[
    ƒU[‚̃R[ƒh‚ªÝ’肵‚½ __DIE__ ƒtƒbƒN‚ðŽÀs‚µ‚½‚­‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB‚±‚Ì–Ú“I
    ‚ɂ͈ȉº‚Ì—á‚̂悤‚ɁAlocal $SIG{__DIE__} \‘¢‚ªŽg‚¦‚Ü‚·B

    # a private exception trap for divide-by-zero
    Sjis::eval { local $SIG{'__DIE__'}; $answer = $a / $b; };
    warn $@ if $@;

    ‚±‚ê‚Í“Á‚É•Ö—˜‚Å‚·; —^‚¦‚ç‚ꂽ __DIE__ ƒtƒbƒN‚Í die ‚ð‚à‚¤ˆê“xŒÄ‚яo‚·‚±‚Æ‚ª
    ‚Å‚«A‚±‚ê‚É‚æ‚Á‚ăGƒ‰[ƒƒbƒZ[ƒW‚ð•Ï‚¦‚éŒø‰Ê‚ª‚ ‚è‚Ü‚·:

    # __DIE__ hooks may modify error messages
    {
        local $SIG{'__DIE__'} =
            sub { (my $x = $_[0]) =~ s/foo/bar/g; die $x };
        Sjis::eval { die "foo lives here" };
        print $@ if $@; # prints "bar lives here"
    }

    ‚±‚ê‚Í‹——£‚Ì—£‚ꂽ“®ì‚Å‚ ‚邽‚߁A‚±‚Ì’¼Š´“I‚Å‚È‚¢U‚é•‘‚¢‚͏«—ˆ‚̃ŠƒŠ[ƒX‚Å
    ‚͏C³‚³‚ê‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB

    Sjis::eval ‚ł́AˆÈ‰º‚̂悤‚ȏꍇ‚ɁA‰½‚ª’²‚ׂç‚ê‚é‚©‚É“Á‚É’ˆÓ‚µ‚Ä‚¨‚­‚±‚Æ‚ª
    •K—v‚Å‚·:

    Sjis::eval $x;        # CASE 1
    Sjis::eval "$x";      # CASE 2

    Sjis::eval '$x';      # CASE 3
    Sjis::eval { $x };    # CASE 4

    Sjis::eval "\$$x++";  # CASE 5
    $$x++;                # CASE 6

    ã‹L‚Ì CASE 1 ‚Æ CASE 2 ‚Ì“®ì‚Í“¯ˆê‚ŁA•Ï” $x “à‚Ì ƒR[ƒh‚ðŽÀs‚µ‚Ü‚·B(‚½
    ‚¾‚µACASE 2 ‚ł́A•K—v‚Ì‚È‚¢ƒ_ƒuƒ‹ƒNƒH[ƒg‚É‚æ‚Á‚āA“ǂސl‚ª‰½‚ª‹N‚±‚é‚©¬—
    ‚·‚邱‚Æ‚Å‚µ‚傤(‰½‚à‹N‚±‚è‚Ü‚¹‚ñ‚ª)B)“¯—l‚É CASE 3 ‚Æ CASE 4 ‚Ì“®ì‚à“™‚µ‚­A
    $x ‚Ì’l‚ð•Ô‚·ˆÈŠO‚ɉ½‚à‚µ‚È‚¢ $x ‚Æ‚¢‚¤ƒR[ƒh‚ðŽÀs‚µ‚Ü‚·(ƒˆ‚ÉŒ©‚½–Ú‚Ì–â‘è
    ‚ŁACASE 4 ‚ªD‚Ü‚ê‚Ü‚·‚ªAŽÀsŽž‚Å‚È‚­ƒRƒ“ƒpƒCƒ‹Žž‚ɃRƒ“ƒpƒCƒ‹‚³‚ê‚é‚Æ‚¢‚¤
    —˜“_‚à‚ ‚è‚Ü‚·)BCASE 5 ‚̏ꍇ‚́A’ʏíƒ_ƒuƒ‹ƒNƒH[ƒg‚ðŽg—p‚µ‚Ü‚·B‚±‚̏󋵂ð
    œ‚¯‚΁ACASE 6 ‚̂悤‚ɁA’P‚ɃVƒ“ƒ{ƒŠƒbƒNƒŠƒtƒ@ƒŒƒ“ƒX‚ðŽg‚¦‚Ηǂ¢‚Å‚µ‚傤B

    Perl 5.14 ‚æ‚è‘O‚ł́A$@ ‚Ö‚Ì‘ã“ü‚̓[ƒJƒ‹‰»‚³‚ꂽ•Ï”‚Ì•œ‹A‚Ì‘O‚É‹N‚«‚é‚Ì
    ‚ŁAŒÃ‚¢ƒo[ƒWƒ‡ƒ“‚ÅŽÀs‚³‚ê‚éê‡‚́A‘S‚Ä‚Å‚Í‚È‚­ˆê•”‚¾‚¯‚̃Gƒ‰[‚ðƒ}ƒXƒN‚µ
    ‚½‚¢ê‡‚ɂ͈ꎞ•Ï”‚ª•K—v‚Å‚·:

    # alter $@ on nefarious repugnancy only
    {
        my $e;
        {
            local $@; # protect existing $@
            Sjis::eval { test_repugnancy() };
            # $@ =~ /nefarious/ and die $@; # Perl 5.14 and higher only
            $@ =~ /nefarious/ and $e = $@;
        }
        die $e if defined $e
    }

    Sjis::eval { block } ‚̃uƒƒbƒN‚̓‹[ƒv‚Æ‚Í‚Ý‚È‚³‚ê‚È‚¢‚̂ŁAƒ‹[ƒv§Œä•¶
    nextAlastAredo ‚ðŽg‚Á‚Ä”²‚¯o‚µ‚½‚èÄŽÀs‚µ‚½‚è‚·‚邱‚Æ‚Í‚Å‚«‚È‚¢B

=item * ƒtƒ@ƒCƒ‹–¼ƒOƒƒrƒ“ƒO

    @glob = glob($expr);
    $glob = glob($expr);
    @glob = glob;
    $glob = glob;
    @glob = <*>;
    $glob = <*>;

    ‚±‚̉‰ŽZŽq‚Í Esjis::glob ‚É‚æ‚Á‚ÄŽÀ‘•‚³‚ê‚Ä‚¢‚Ü‚·BEsjis::glob ‚̏ڍׂ͈ȉº‚Ì
    ’Ê‚è‚Å‚·B

    @glob = Esjis::glob($string);
    @glob = Esjis::glob_;

    ‚±‚̃Tƒuƒ‹[ƒ`ƒ“‚́A$string‚Ì’l‚ɑ΂µ‚āADOS•—ƒVƒFƒ‹‚Æ“¯‚¶‚悤‚ȃtƒ@ƒCƒ‹–¼“WŠJ
    ‚ðs‚Á‚Ä“¾‚ç‚ꂽŒ‹‰Ê‚ð•Ô‚µ‚Ü‚·B$string ‚ªÈ—ª‚³‚ꂽ‚Æ‚«‚Í‘ã‚í‚è‚É $_ ‚ªŽg‚í‚ê
    ‚Ü‚·B‚±‚̃Tƒuƒ‹[ƒ`ƒ“‚Í Sjisƒ\ƒtƒgƒEƒFƒA“à•”‚Å <*> ‚¨‚æ‚Ñ glob ‰‰ŽZŽq‚ðŽÀ‘•‚µ
    ‚Ä‚¢‚éƒTƒuƒ‹[ƒ`ƒ“‚Å‚·BMSWin32ŠÂ‹«‚É‚Ä $string ‚ª chr(0x5c) ‚ŏI—¹‚µ‚Ä‚¢‚éê‡
    ‚Å‚à“®ì‚µ‚Ü‚·B

    Žg‚¢‚â‚·‚­‚·‚邽‚ß‚É Esjis::glob ‚́AUNIX•—‚Å‚Í‚È‚­ADOS•—‚Ì“WŠJ‚ðs‚¤‚悤‚É‚È‚Á
    ‚Ä‚¢‚Ü‚·BƒAƒXƒ^ƒŠƒXƒN("*")‚́A”CˆÓ‚Ì•¶Žš‚ð”CˆÓŒÂ(0ŒÂ‚Å‚à‚æ‚¢)•À‚ׂ½‚à‚̂Ƀ}ƒbƒ`
    ‚µ‚Ü‚·BƒNƒGƒXƒ`ƒ‡ƒ“‹L†("?")‚́A”CˆÓ‚Ì•¶Žš1ŒÂ‚Ü‚½‚Í0ŒÂ‚Ƀ}ƒbƒ`‚µ‚Ü‚·BƒeƒBƒ‹
    ƒf("~")‚̓z[ƒ€ƒfƒBƒŒƒNƒgƒŠ–¼‚É“WŠJ‚³‚ê‚Ü‚·B—Ⴆ‚΁A"~/.*rc" ‚ÍŒ»Ý‚̃†[ƒU‚Ì
    "rc" ƒtƒ@ƒCƒ‹‚·‚ׂĂɃ}ƒbƒ`‚·‚邵A"~jane/Mail/*" ‚ÍJane‚̃[ƒ‹ƒtƒ@ƒCƒ‹‚·‚ׂÄ
    ‚Ƀ}ƒbƒ`‚µ‚Ü‚·B

    ASCII‚̉pŽš‚̑啶Žš‚Ə¬•¶Žš‚Í‹æ•Ê‚³‚ꂸA“¯‚¶‚à‚Ì‚Æ‚µ‚Ĉµ‚í‚ê‚Ü‚·BƒoƒbƒNƒXƒ‰ƒb
    ƒVƒ…‚ƃXƒ‰ƒbƒVƒ…‚Í‚Ç‚¿‚ç‚àƒfƒBƒŒƒNƒgƒŠƒZƒpƒŒ[ƒ^‚Æ‚µ‚Ĉµ‚í‚ê‚Ü‚·Bƒ_ƒuƒ‹ƒNƒH[ƒg
    •¶Žš—ñ‚Ì’†‚ŃoƒbƒNƒXƒ‰ƒbƒVƒ…1‚Â(\)‚ð•\‚í‚·‚½‚ß‚É‚Í2‚Â‚Ì \A(‚‚܂è \\ )‚ð‹Lq‚·
    ‚é•K—v‚ª‚ ‚è‚Ü‚·B

    ‹ó”’•¶Žš‚ðŠÜ‚މ”\«‚Ì‚ ‚éƒtƒ@ƒCƒ‹–¼‚ðƒOƒƒu‚µ‚½‚¢ê‡‚ɂ́A$string‚ðƒ_ƒuƒ‹
    ƒNƒH[ƒg‚ň͂ޕK—v‚ª‚ ‚è‚Ü‚·B‚È‚º‚È‚çAEsjis::glob ‚́A‹ó”’•¶Žš‚ð“Á•Êˆµ‚¢‚µ‚Ä•¡”
    ‚̃pƒ^[ƒ“‚Ì‹æØ‚è(—Ⴆ‚Î<*.c *.h>)‚ƉðŽß‚µ‚Ä‚µ‚Ü‚¤‚©‚ç‚Å‚·B
    —Ⴆ‚΁A"e" ‚ÌŒã‚ë‚É‹ó”’•¶ŽšA‚»‚ÌŒã‚ë‚É "f" ‚ª‘±‚­ƒtƒ@ƒCƒ‹–¼‚̃Oƒƒrƒ“ƒO‚ðs‚¤
    ‚ɂ͈ȉº‚̂悤‚É‹Lq‚µ‚Ü‚·B

    @spacies = <"*e f*">;
    @spacies = Esjis::glob('"*e f*"');
    @spacies = Esjis::glob(q("*e f*"));

    •Ï”‚ð—˜—p‚·‚éê‡‚͈ȉº‚̂悤‚É‚µ‚Ü‚·B

    @spacies = Esjis::glob("'*${var}e f*'");
    @spacies = Esjis::glob(qq("*${var}e f*"));

    ƒXƒNƒŠƒvƒg‚ð¡Œã‚àDOS•—‚ÌOS‚ÅŽÀs‚·‚é‚Ì‚Å‚ ‚ê‚΁A

    # ‘Š‘΃pƒX‚Ŏ擾‚·‚éê‡
    @relpath_file = split(/\n/,`dir /b wildcard\\here*.txt 2>NUL`);

    # â‘΃pƒX‚Ŏ擾‚·‚éê‡
    @abspath_file = split(/\n/,`dir /s /b wildcard\\here*.txt 2>NUL`);

    ‚Æ‹Lq‚µ‚Ä‚à‚æ‚¢‚Å‚µ‚傤B

=back

=head1 ƒoƒCƒgŽwŒü‚̊֐”

=over 2

=item * CORE::chop

    $byte = CORE::chop($string);
    $byte = CORE::chop(@list);
    $byte = CORE::chop;

    •¶Žš—ñ•Ï”‚ ‚é‚¢‚̓oƒCƒg—ñ•Ï”‚̍Ōã‚̃oƒCƒg‚ðØ‚è—Ž‚Æ‚µA‚»‚̃oƒCƒg‚ð’l‚Æ‚µ‚Ä
    •Ô‚µ‚Ü‚·BCORE::chop ‰‰ŽZŽq‚́AŽå‚É“ü—̓ŒƒR[ƒh‚Ì––”ö‚©‚ç‰üs•¶Žš‚ðŽæ‚菜‚­‚Ì‚É
    —p‚¢‚ç‚êA’uŠ·‰‰ŽZŽq‚ðŽg‚¤(s/\n$//)‚æ‚è‚àŒø—¦“I‚Å‚·B‚à‚µ‚â‚肽‚¢‚±‚Æ‚ª‚»‚ꂾ‚¯
    ‚È‚ç‚΁Achomp ‚ðŽg‚¤‚Ù‚¤‚ª‚æ‚èˆÀ‘S‚Å‚·B‚È‚º‚È‚çACORE::chop ‚Í––”ö‚É‚ ‚éƒoƒCƒg
    ‚ð–³ðŒ‚ÅŽæ‚菜‚­‚̂ɑ΂µ‚āAchomp ‚ÍŽæ‚菜‚­‚à‚Ì‚ð‘I‚ñ‚ÅŽæ‚菜‚­‚©‚ç‚Å‚·B

    ƒŠƒeƒ‰ƒ‹‚ð CORE::chop ‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñ --- CORE::chop ‚Å‚«‚é‚͕̂ϐ”‚¾‚¯‚Å
    ‚·B

    ˆø”‚Æ‚µ‚ĕϐ”‚̃ŠƒXƒg @list ‚ð—^‚¦‚é‚ƁAƒŠƒXƒg‚ÌŠe•¶Žš—ñ‚̍Ōã‚̃oƒCƒg‚ªØ‚è
    —Ž‚Æ‚³‚ê‚Ü‚·:

    @lines = `cat myfile`;
    CORE::chop @lines;

    ‘ã“üŽ®‚ðŠÜ‚߁A¶•Ó’l‚È‚ç‚΂ǂñ‚È‚à‚Ì‚Å‚à CORE::chop ‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·:

    CORE::chop($cwd = `pwd`);
    CORE::chop($answer = <STDIN>);

    ã‚Ì2s‚́AŽŸ‚Ì—á‚Ƃ͈á‚Á‚½“®ì‚ð‚µ‚Ü‚·:

    $answer = CORE::chop($tmp = <STDIN>); # Œë‚è

    ‚±‚̃R[ƒh‚ł́ACORE::chop ‚́A($tmp‚É“ü‚Á‚Ä‚¢‚é)Žc‚³‚ꂽ•¶Žš—ñ‚Å‚Í‚È‚­AØ‚è
    —Ž‚Æ‚µ‚½ƒoƒCƒg‚ð•Ô‚·‚̂ŁA$answer ‚ɂ͉üs•¶Žš‚ªƒZƒbƒg‚³‚ê‚Ä‚µ‚Ü‚¢‚Ü‚·BˆÓ}‚µ
    ‚½Œ‹‰Ê‚𓾂邽‚ß‚Ì•û–@‚Ì1‚‚́Asubstr ‚ðŽg‚¤‚±‚Æ‚Å‚·:

    $answer = substr <STDIN>, 0, -1;

    ‚µ‚©‚µAŽŸ‚̂悤‚ɏ‘‚­‚Ì‚ª•’Ê‚Å‚·:

    CORE::chop($answer = <STDIN>);

    Å‚àˆê”Ê“I‚ȃP[ƒX‚ł́Asubstr ‚ðŽg‚Á‚āACORE::chop ‚ð‘‚«Š·‚¦‚邱‚Æ‚ª‚Å‚«‚Ü‚·:

    $last_byte = CORE::chop($var);
    $last_byte = substr($var, -1, 1, ""); # “¯‚¶‚±‚Æ

    ‚±‚ê‚炪“™‰¿‚Å‚ ‚邱‚Æ‚ð—‰ð‚µ‚Ä‚µ‚Ü‚¦‚΁A‚Ü‚Æ‚ß‚Ä CORE::chop ‚ðs‚¤‚±‚Æ‚ª‚Å‚«
    ‚Ü‚·B2ŒÂˆÈã‚̃oƒCƒg‚ð‚܂Ƃ߂Đ؂藎‚Æ‚·‚ɂ́Asubstr ‚ð¶•Ó’l‚Æ‚µ‚ÄŽg‚¢A‚»‚ê‚É
    ‹ó•¶Žš—ñ‚ð‘ã“ü‚µ‚Ü‚·BŽŸ‚̃R[ƒh‚Í $caravan ‚̍Ōã‚Ì5ƒoƒCƒg‚ðŽæ‚菜‚«‚Ü‚·:

    substr($caravan, -5) = "";

    ‚±‚±‚Å‚Í substr ‚É•‰‚Ì’l‚ð—^‚¦‚邱‚Æ‚É‚æ‚Á‚āA(æ“ª‚©‚ç‚Å‚Í‚È‚­)––”ö‚©‚ç‚̃I
    ƒtƒZƒbƒg‚ðŽw’肵‚Ä‚¢‚Ü‚·Bíœ‚µ‚½ƒoƒCƒg‚ð•Û‘¶‚µ‚½‚¯‚ê‚΁A4ˆø”‚Ì substr ‚ðŽg‚Á
    ‚Ä5ƒoƒCƒg‚ð CORE::chop ‚µ‚Ü‚·:

    $tail = substr($caravan, -5, 5, "");

    ˆø”‚ðÈ—ª‚·‚é‚ƁA•Ï” $_ ‚ª‘ΏۂƂȂè‚Ü‚·B

=item * CORE::ord

    $ord = CORE::ord($expr);

    CORE::ord($expr) ‚Í "use Sjis qw(ord);" ‚Ì‹Lq‚Ì—L–³‚ÉŠÖ‚í‚炸Aí‚É $expr
    ‚̐擪‚̃oƒCƒg’l‚ð•Ô‚µ‚Ü‚·B$expr ‚ªÈ—ª‚³‚ꂽê‡‚Í $_ ‚ª‘ΏۂƂȂè‚Ü‚·B
    ‚±‚̊֐”‚͏í‚É•„†‚È‚µ‚Ì’l‚ð•Ô‚µ‚Ü‚·B

    •„†•t‚«‚Ì’l‚ª•K—v‚Å‚ ‚ê‚΁Aunpack('c',$expr) ‚ðŽg‚¢‚Ü‚·B‚Ü‚½‘S‚ẴoƒCƒg’l
    ‚ðƒŠƒXƒg‚Æ‚µ‚Ä•K—v‚Å‚ ‚ê‚Î unpack('C*',$expr) ‚ð‘ã‚í‚è‚ÉŽg‚¢‚Ü‚·B

=item * CORE::reverse

    @reverse = CORE::reverse(@list);
    $reverse = CORE::reverse(@list);

    CORE::reverse(@list) ‚̓ŠƒXƒgƒRƒ“ƒeƒLƒXƒg‚Å‚Í @list ‚Ì—v‘f‚ð‹t‡‚É•À‚ׂ½
    ƒŠƒXƒg’l‚ð•Ô‚µ‚Ü‚·B

    ƒXƒJƒ‰[ƒRƒ“ƒeƒLƒXƒg‚Å‚Í "use Sjis qw(ord);" ‚Ì‹Lq‚Ì—L–³‚ÉŠÖ‚í‚炸A @list
    ‚Ì‚·‚ׂĂ̗v‘f‚ð˜AŒ‹‚µ‚½ã‚ŁAƒoƒCƒg’PˆÊ‚Å‹t‡‚É‚µ‚½‚à‚Ì‚ð•Ô‚µ‚Ü‚·B

=item * CORE::getc

    $getc = CORE::getc(FILEHANDLE);
    $getc = CORE::getc($filehandle);
    $getc = CORE::getc;

    FILEHANDLE ‚ÉŒ‹‚т‚¯‚ç‚ꂽ“ü—̓tƒ@ƒCƒ‹‚©‚çAŽŸ‚Ì1ƒoƒCƒg‚ð“Ç‚ñ‚Å•Ô‚µ‚Ü‚·B
    end-of-file(ƒtƒ@ƒCƒ‹‚̏I‚í‚è) ‚É‚È‚Á‚½‚©A‚ ‚é‚¢‚Í I/O ƒGƒ‰[‚ª”­¶‚µ‚½ê‡‚É
    ‚́Aundef ‚ð•Ô‚µ‚Ü‚·BFILEHANDLE ‚ðÈ—ª‚·‚é‚ƁASTDIN ‚©‚ç“ü—Í‚µ‚Ü‚·B

    ‚±‚̊֐”‚͏­‚µ’x‚¢‚à‚̂́AƒL[ƒ{[ƒh‚©‚ç1ƒoƒCƒg‚ð“ü—Í‚·‚éÛ‚É•Ö—˜‚Å‚· -- ƒL[
    ƒ{[ƒh“ü—Í‚ðƒoƒbƒtƒ@ƒŠƒ“ƒO‚È‚µ‚ɐݒè‚Å‚«‚ê‚΂ł·‚ªB‚±‚̊֐”‚́A•W€I/Oƒ‰ƒCƒu
    ƒ‰ƒŠ‚ɑ΂µ‚āAƒoƒbƒtƒ@ƒŠƒ“ƒO‚È‚µ‚Å“ü—Í‚·‚é‚悤‚É—v‹‚µ‚Ü‚·BŽc”O‚È‚±‚ƂɁA•W€
    I/Oƒ‰ƒCƒuƒ‰ƒŠ‚́AƒIƒyƒŒ[ƒeƒBƒ“ƒOƒVƒXƒeƒ€‚ɑ΂µ‚ăoƒbƒtƒ@ƒŠƒ“ƒO‚È‚µ‚ŃL[ƒ{[ƒh
    “ü—Í‚ðs‚¤‚悤‚É—v‹‚·‚邽‚߂́AˆÚA«‚Ì‚ ‚éŽè’i‚ð—pˆÓ‚·‚é‚܂łɂ́A•W€‰»‚³‚ê
    ‚Ä‚¢‚Ü‚¹‚ñB‚»‚ê‚ɂ́A­X’mŒb‚ð“­‚©‚¹‚āAƒIƒyƒŒ[ƒeƒBƒ“ƒOƒVƒXƒeƒ€‚ɌŗL‚Ì‚â‚è
    •û‚ð‚·‚é•K—v‚ª‚ ‚è‚Ü‚·BUnix ‚ł́AŽŸ‚̂悤‚É‚·‚ê‚΂¤‚Ü‚­‚¢‚­‚Å‚µ‚傤B

    if ($BSD_STYLE) {
        system "stty cbreak </dev/tty >/dev/tty 2>&1";
    }
    else {
        system "stty", "-icanon", "eol", "\001";
    }

    $key = CORE::getc;

    if ($BSD_STYLE) {
        system "stty -cbreak </dev/tty >/dev/tty 2>&1";
    }
    else {
        system "stty", "icanon", "eol", "^@"; # ASCII NUL
    }
    print "\n";

    ‚±‚̃R[ƒh‚́A’[––‚©‚玟‚Ƀ^ƒCƒv‚³‚ꂽ1ƒoƒCƒg‚ð•Ï” $key ‚É“ü‚ê‚Ü‚·B‚ ‚È‚½‚Ì
    ƒVƒXƒeƒ€‚Ì stty ƒvƒƒOƒ‰ƒ€‚É cbreak ƒIƒvƒVƒ‡ƒ“‚ª‚ ‚é‚È‚çAã‚̃R[ƒh‚Ì‚¤‚¿A
    $BSD_STYLE ‚ª^‚̏ꍇ‚̃R[ƒh‚ðŽg‚¤‚Æ—Ç‚¢‚Å‚µ‚傤B‚»‚¤‚Å‚È‚¯‚ê‚΁A$BSD_STYLE
    ‚ª‹U‚̏ꍇ‚̃R[ƒh‚ðŽg‚¦‚΂悢‚Å‚µ‚傤B

=item * CORE::index

    $index = CORE::index($string,$substring,$offset);
    $index = CORE::index($string,$substring);

    CORE::index ‚́AƒoƒCƒg—ñ $string ‚Ì’†‚ÉŠÜ‚Ü‚ê‚éA‚à‚¤1‚‚̃oƒCƒg—ñ $substring
    ‚ð’T‚µ‚Ü‚·B$string ‚Ì’†‚ŁA$substring ‚ªÅ‰‚ɏoŒ»‚·‚éˆÊ’u‚ðƒoƒCƒg’PˆÊ‚Ő”‚¦‚Ä
    •Ô‚µ‚Ü‚·B$offset ‚ªŽw’肳‚ê‚Ä‚¢‚éê‡A$string ‚̐擪‚©‚ç $offset ƒoƒCƒg•ªƒXƒLƒb
    ƒv‚µ‚½ˆÊ’u‚©‚çA$substring ‚ð’T‚µŽn‚ß‚Ü‚·BˆÊ’u‚Í 0 ‚ðƒx[ƒX‚É‚µ‚Đ”‚¦‚Ü‚·B
    $substring ‚ªŒ©‚‚©‚ç‚È‚¯‚ê‚΁ACORE::index ŠÖ”‚̓x[ƒX‚æ‚è 1 ‚¾‚¯¬‚³‚¢’l -1
    ‚ð•Ô‚µ‚Ü‚·BCORE::index ‚ðŽg‚Á‚āAƒoƒCƒg—ñ‘S‘̂𒲂ׂé‚ɂ́AŽŸ‚̂悤‚É‚µ‚Ü‚·B

    $pos = -1;
    while (($pos = CORE::index($string, $lookfor, $pos)) > -1) {
        print "Found at $pos\n";
        $pos++;
    }

=item * CORE::rindex

    $rindex = CORE::rindex($string,$substring,$offset);
    $rindex = CORE::rindex($string,$substring);

    CORE::rindex ‚Í CORE::index ‚ÆŽ—‚Ä‚¢‚Ü‚·‚ªAƒoƒCƒg—ñ $string ‚Ì’†‚ŁA•”•ªƒoƒCƒg
    —ñ $substring ‚ªÅŒã‚ɏoŒ»‚·‚éˆÊ’u‚ðƒoƒCƒg’PˆÊ‚Ő”‚¦‚Ä•Ô‚µ‚Ü‚·(‚‚܂è
    reverse CORE::index ‚Å‚·)B$substring ‚ªŒ©‚‚©‚ç‚È‚¯‚ê‚΁A-1 ‚ð•Ô‚µ‚Ü‚·B
    $offset ‚É‚æ‚Á‚āA’l‚Æ‚µ‚Ä•Ô‚·‚±‚Æ‚ª‹–‚³‚ê‚éAÅ‚à‰E‚æ‚è‚̈ʒu‚ðŽw’è‚·‚邱‚Æ
    ‚ª‚Å‚«‚Ü‚·BCORE::rindex ‚ðŽg‚Á‚āAƒoƒCƒg—ñ‘S‘Ì‚ð––”ö‚©‚çæ“ª‚ÉŒü‚©‚Á‚Ä’²‚ׂé
    ‚ɂ́AŽŸ‚̂悤‚É‚µ‚Ü‚·B

    $pos = CORE::length($string);
    while (($pos = CORE::rindex($string, $lookfor, $pos)) >= 0) {
        print "Found at $pos\n";
        $pos--;
    }

=back

=head1 bytes::* ƒTƒuƒ‹[ƒ`ƒ“‚̃Aƒ“ƒGƒXƒP[ƒv

‚±‚̃\ƒtƒgƒEƒFƒA‚É‚æ‚Á‚Ä bytes::* ƒTƒuƒ‹[ƒ`ƒ“‚̐擪‚Ì 'bytes::' ‚ªŽæ‚菜‚©‚ê‚Ü‚·B

  -----------------------------------------
  ˆ—‘O           ˆ—Œã    “®ì
  -----------------------------------------
  bytes::chr       chr       ƒoƒCƒgŽwŒü
  bytes::index     index     ƒoƒCƒgŽwŒü
  bytes::length    length    ƒoƒCƒgŽwŒü
  bytes::ord       ord       ƒoƒCƒgŽwŒü
  bytes::rindex    rindex    ƒoƒCƒgŽwŒü
  bytes::substr    substr    ƒoƒCƒgŽwŒü
  -----------------------------------------

=head1 –³Ž‹‚·‚éƒvƒ‰ƒOƒ}‚¨‚æ‚у‚ƒWƒ…[ƒ‹

  -----------------------------------------------------------
  ˆ—‘O                    ˆ—Œã
  -----------------------------------------------------------
  use strict;               use strict; no strict qw(refs);
  use 5.12.0;               use 5.12.0; no strict qw(refs);
  require utf8;             # require utf8;
  require bytes;            # require bytes;
  require charnames;        # require charnames;
  require I18N::Japanese;   # require I18N::Japanese;
  require I18N::Collate;    # require I18N::Collate;
  require I18N::JExt;       # require I18N::JExt;
  require File::DosGlob;    # require File::DosGlob;
  require Wild;             # require Wild;
  require Wildcard;         # require Wildcard;
  require Japanese;         # require Japanese;
  use utf8;                 # use utf8;
  use bytes;                # use bytes;
  use charnames;            # use charnames;
  use I18N::Japanese;       # use I18N::Japanese;
  use I18N::Collate;        # use I18N::Collate;
  use I18N::JExt;           # use I18N::JExt;
  use File::DosGlob;        # use File::DosGlob;
  use Wild;                 # use Wild;
  use Wildcard;             # use Wildcard;
  use Japanese;             # use Japanese;
  no utf8;                  # no utf8;
  no bytes;                 # no bytes;
  no charnames;             # no charnames;
  no I18N::Japanese;        # no I18N::Japanese;
  no I18N::Collate;         # no I18N::Collate;
  no I18N::JExt;            # no I18N::JExt;
  no File::DosGlob;         # no File::DosGlob;
  no Wild;                  # no Wild;
  no Wildcard;              # no Wildcard;
  no Japanese;              # no Japanese;
  -----------------------------------------------------------

  utf8 ƒvƒ‰ƒOƒ}Abytes ƒvƒ‰ƒOƒ}‚̓Rƒƒ“ƒgƒAƒEƒg‚³‚ê‚Ü‚·B“¯ƒtƒ@ƒCƒ‹‚Å’ñ‹Ÿ‚³‚ê‚Ä
  ‚¢‚éƒTƒuƒ‹[ƒ`ƒ“‚Ì‘ã‚í‚è‚Æ‚µ‚Ä Esjis.pm ‚ªƒ_ƒ~[ƒTƒuƒ‹[ƒ`ƒ“‚ð’ñ‹Ÿ‚µ‚Ü‚·B

=over 2

=item * ƒ_ƒ~[‚̃Tƒuƒ‹[ƒ`ƒ“ utf8::upgrade

  $num_octets = utf8::upgrade($string);

  $string ‚̃IƒNƒeƒbƒg”‚ð•Ô‚µ‚Ü‚·B

=item * ƒ_ƒ~[‚̃Tƒuƒ‹[ƒ`ƒ“ utf8::downgrade

  $success = utf8::downgrade($string[, FAIL_OK]);

  ‚±‚̃Tƒuƒ‹[ƒ`ƒ“‚͏í‚ɐ^‚Ì’l‚ð•Ô‚µ‚Ü‚·B

=item * ƒ_ƒ~[‚̃Tƒuƒ‹[ƒ`ƒ“ utf8::encode

  utf8::encode($string);

  ‚±‚̃Tƒuƒ‹[ƒ`ƒ“‚͉½‚à•Ô‚µ‚Ü‚¹‚ñB

=item * ƒ_ƒ~[‚̃Tƒuƒ‹[ƒ`ƒ“ utf8::decode

  $success = utf8::decode($string);

  ‚±‚̃Tƒuƒ‹[ƒ`ƒ“‚͏í‚ɐ^‚Ì’l‚ð•Ô‚µ‚Ü‚·B

=item * ƒ_ƒ~[‚̃Tƒuƒ‹[ƒ`ƒ“ utf8::is_utf8

  $flag = utf8::is_utf8(STRING);

  ‚±‚̃Tƒuƒ‹[ƒ`ƒ“‚͏í‚É‹U‚Ì’l‚ð•Ô‚µ‚Ü‚·B

=item * ƒ_ƒ~[‚̃Tƒuƒ‹[ƒ`ƒ“ utf8::valid

  $flag = utf8::valid(STRING);

  ‚±‚̃Tƒuƒ‹[ƒ`ƒ“‚͏í‚ɐ^‚Ì’l‚ð•Ô‚µ‚Ü‚·B

=item * ƒ_ƒ~[‚̃Tƒuƒ‹[ƒ`ƒ“ bytes::chr

  ƒoƒCƒgŽwŒü‚̃Tƒuƒ‹[ƒ`ƒ“ chr ‚Æ‚µ‚ÄŽÀ‘•‚³‚ê‚Ä‚¢‚Ü‚·B

=item * ƒ_ƒ~[‚̃Tƒuƒ‹[ƒ`ƒ“ bytes::index

  ƒoƒCƒgŽwŒü‚̃Tƒuƒ‹[ƒ`ƒ“ index ‚Æ‚µ‚ÄŽÀ‘•‚³‚ê‚Ä‚¢‚Ü‚·B

=item * ƒ_ƒ~[‚̃Tƒuƒ‹[ƒ`ƒ“ bytes::length

  ƒoƒCƒgŽwŒü‚̃Tƒuƒ‹[ƒ`ƒ“ length ‚Æ‚µ‚ÄŽÀ‘•‚³‚ê‚Ä‚¢‚Ü‚·B

=item * ƒ_ƒ~[‚̃Tƒuƒ‹[ƒ`ƒ“ bytes::ord

  ƒoƒCƒgŽwŒü‚̃Tƒuƒ‹[ƒ`ƒ“ ord ‚Æ‚µ‚ÄŽÀ‘•‚³‚ê‚Ä‚¢‚Ü‚·B

=item * ƒ_ƒ~[‚̃Tƒuƒ‹[ƒ`ƒ“ bytes::rindex

  ƒoƒCƒgŽwŒü‚̃Tƒuƒ‹[ƒ`ƒ“ rindex ‚Æ‚µ‚ÄŽÀ‘•‚³‚ê‚Ä‚¢‚Ü‚·B

=item * ƒ_ƒ~[‚̃Tƒuƒ‹[ƒ`ƒ“ bytes::substr

  ƒoƒCƒgŽwŒü‚̃Tƒuƒ‹[ƒ`ƒ“ substr ‚Æ‚µ‚ÄŽÀ‘•‚³‚ê‚Ä‚¢‚Ü‚·B

=back

=head1 Sjisƒ\ƒtƒgƒEƒFƒA‚̃}ƒ‹ƒ`ƒoƒCƒgƒAƒ“ƒJ[ƒŠƒ“ƒOˆ—

=over 2

=item * ƒoƒCƒgˆ—‚Æ•¶Žšˆ—(CJKV“ú’†ŠØ‰zî•ñˆ—‚æ‚è)

ƒVƒtƒgJIS‚̂悤‚ȃ}ƒ‹ƒ`ƒoƒCƒg•¶Žš‚ðˆ—‚·‚é‚Æ‚«‚Ɂu•¶Žš‚̍폜vu•¶Žš‚Ì‘}“üvu•¶Žš‚Ì
ŒŸõv‚ð“KØ‚ɍs‚¤‚½‚߂ɂ́A1•¶Žš‚ª1ƒoƒCƒg‚Å•\‚³‚ê‚é‚Æ‚¢‚¤ŒÅ’èŠÏ”O‚ð”j‚ç‚È‚¯‚ê‚΂Ȃè
‚Ü‚¹‚ñB

‚±‚Ì‚±‚Ƃɂ‚¢‚Ä

  CJKV“ú’†ŠØ‰zî•ñˆ—(ISBN 4-87311-108-0)
  http://www.oreilly.co.jp/books/4873111080/
  
  P.439 9.6 ƒoƒCƒgˆ—‚Æ•¶Žšˆ—
    9.6.1 •¶Žš‚̍폜
    9.6.2 •¶Žš‚Ì‘}“ü
    9.6.3 •¶Žš‚ÌŒŸõ

‚ɏڂµ‚­‘‚©‚ê‚Ä‚¢‚Ü‚·B
‚Ü‚½‚±‚ê‚ð Perl ƒvƒƒOƒ‰ƒ~ƒ“ƒO‚Å‰ðŒˆ‚·‚邽‚ß‚Ì•û–@‚ª“¯‘‚Ì

  •t˜^W Perl‚̃vƒƒOƒ‰ƒ€—á
    W.8 CJKV•„†‰»‚̃eƒ“ƒvƒŒ[ƒg
      W.8.5 ƒVƒtƒgJIS •„†‰»
    W.9 ƒ}ƒ‹ƒ`ƒoƒCƒgƒAƒ“ƒJ[ƒŠƒ“ƒO
    W.10 ƒ}ƒ‹ƒ`ƒoƒCƒgˆ—

‚ÉŒfÚ‚³‚ê‚Ä‚¢‚Ü‚·B

=item * ‘Oi‚É‚æ‚éV‚½‚ȉۑè

ã‹L‚̃}ƒ‹ƒ`ƒoƒCƒgƒAƒ“ƒJ[ƒŠƒ“ƒO‚̃eƒ“ƒvƒŒ[ƒg‚ð‰ž—p‚·‚é‚ƁAƒVƒtƒgJIS‚Ì•¶Žš—ñ‚𐳋K•\Œ»
‚ŏˆ—‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚·‚ªA‚±‚Ì‘Oi‚É‚æ‚Á‚ĐV‚½‚È•Ç‚É“Ë‚«“–‚½‚è‚Ü‚·B

  wcs_abe‚³‚ñ‚Ì•ñ
  Perl ƒtƒ@ƒCƒ‹ˆê‹C“Ç‚ÝŒã‚̐³‹K•\Œ»‚ɂ‚¢‚Ä
  http://okwave.jp/qa/q6674287.html
  
  Perl‚ňȉº‚Ì’Ê‚èAhtmlƒtƒ@ƒCƒ‹‚ð‘S‚ēǂݍž‚ñ‚¾Œã‚ɐ³‹K•\Œ»‚ð“–‚Ä‚½‚¢‚Ì‚Å‚·‚ªA‚¤‚Ü‚­
  ‚¢‚«‚Ü‚¹‚ñB‹°k‚Å‚·‚ªAŒ´ˆö‚ð‚²‘¶’m‚Ì•û‚¢‚ç‚Á‚µ‚á‚¢‚Ü‚µ‚½‚狳‚¦‚Ä’¸‚¯‚Ü‚¹‚ñ‚Å‚µ‚傤
  ‚©B‚Ü‚½A‘¼‚É—Ç‚¢‰ðŒˆ•û–@‚ª‚ ‚è‚Ü‚µ‚½‚狳‚¦‚Ä’¸‚¯‚é‚ƍK‚¢‚Å‚·B
  ¦PCŠÂ‹«‚Íwindows7, perl5.12‚Å‚·Bî•ñ‚É•s‘«‚ª‚²‚´‚¢‚Ü‚µ‚½‚炲Žw“E‰º‚³‚¢B
  
  -----
  #--test.html(¶‘¤‚̐”Žš‚͍s”)
  000001 <dl>
  000002 <dt>aaa</dt>
  000003 <dd>12345</dd>
  000004 </dl>
  
  i’†—ªj
  
  120001 <dl>
  120002 <dt>bbb</dt>
  120003 <dd>6789</dd>
  120004 </dl>
  
  #--test.pl
  open IN , "test.html";
  local $/ = undef;
  $data = <IN>;
  close IN;
  
  $data =~ s|<dt>bbb</dt>|<dt>ccc</dt>|;
  print "$data\n";
  -----
  
  ƒtƒ@ƒCƒ‹‚ÌŽn‚ß‚Ì•û‚¾‚Æ“–‚½‚é‚̂ɁAŒã”¼‚Å‚Í“–‚½‚è‚Ü‚¹‚ñB
  ³‹K•\Œ»‚̑ΏۂƂµ‚Ä‘å‚«‚·‚¬‚é‚ñ‚Å‚µ‚傤‚©EEEB
  
  $data =~ s|<dt>aaa</dt>|<dt>ccc</dt>|;
  ‚́A“–‚½‚è‚Ü‚·‚ª
  
  $data =~ s|<dt>bbb</dt>|<dt>ccc</dt>|;
  ‚¾‚Æ“–‚½‚è‚Ü‚¹‚ñB
  
  ‚Ç‚¤‚¼‚æ‚낵‚­‚¨Šè‚¢‚¢‚½‚µ‚Ü‚·B
  
  •â‘«
  ã‹L‚ÌŽ¿–â‚ł́AŠÖ˜A‚Í”–‚¢‚ÆŽv‚¢‚ ‚¦‚Ä‹LÚ‚µ‚È‚©‚Á‚½‚ñ‚Å‚·‚ªA‚±‚Ìhtmlƒtƒ@ƒCƒ‹‚Í
  SjisƒeƒLƒXƒg‚ŁA‚»‚ê‚ðSjis.pm‚ðŽg‚Á‚ďˆ—‚ðs‚¨‚¤‚Æ‚µ‚Ä‚¢‚Ü‚·B

‚±‚̏Ǐó‚ðÄŒ»‚·‚éÅ¬‚̃R[ƒh‚ð‘‚­‚Æ

  # ƒXƒNƒŠƒvƒg test2.pl
  for my $n (32767, 32768) {
      $_ = ('A' x $n) . 'B';
      if (/(\G(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC])*?)B/) {
          print "ok - ('A' x $n).'B' =~ /B/\n";
      }
      else {
          print "not ok - ('A' x $n).'B' =~ /B/\n";
      }
  }
  __END__

‚̂悤‚É‚È‚èAŽÀsŒ‹‰Ê‚Í

  ok - ('A' x 32767).'B' =~ /B/
  not ok - ('A' x 32768).'B' =~ /B/

‚Æ‚È‚è‚Ü‚·B'A' ‚ª 32,767ŒÂ‘±‚¢‚½Œã‚Ì 'B' ‚ÍŒŸõ‚µ‚ÄŒ©‚‚©‚é‚̂ɁA32,768ŒÂ‘±‚¢‚½Œã‚Ì
'B' ‚ÍŒŸõ‚µ‚Ä‚àŒ©‚‚©‚ç‚È‚¢‚Ì‚Å‚·B

=item * Perl‚̐³‹K•\Œ»‚Ì—ÊŽw’èŽq‚ÌŒÀŠE

‚±‚ÌŒ´ˆö‚Í perl ƒCƒ“ƒ^ƒvƒŠƒ^‚É‚ ‚è‚Ü‚·B

  —ÊŽw’èŽq
  http://perldoc.jp/docs/perl/5.14.1/perlre.pod
  
  ˆÈ‰º‚Ì•W€“I‚È—ÊŽw’èŽq‚ðŽg‚¦‚Ü‚·:
    *           Match 0 or more times
    +           Match 1 or more times
    ?           Match 1 or 0 times
    {n}         Match exactly n times
    {n,}        Match at least n times
    {n,m}       Match at least n but not more than m times
  
  (‘O—ª) "*" —ÊŽw’èŽq‚Í {0,} ‚ƁA"+" —ÊŽw’èŽq‚Í {1,} ‚ƁA "?" —ÊŽw’èŽq‚Í {0,1} ‚Æ“™‰¿
  ‚Å‚·B n ‹y‚Ñ m ‚Í perl ‚ðƒrƒ‹ƒh‚µ‚½‚Æ‚«‚É’è‹`‚µ‚½Šù’è‚̐§ŒÀ‚æ‚菬‚³‚È”ñ•‰®”‰ñ‚É
  §ŒÀ‚³‚ê‚Ü‚·B ‚±‚ê‚Í‘å’ï‚̃vƒ‰ƒbƒgƒtƒH[ƒ€‚Å‚Í 32766 ‰ñ‚É‚È‚Á‚Ä‚¢‚Ü‚·B ŽÀÛ‚̐§ŒÀ
  ‚ÍŽŸ‚̂悤‚ȃR[ƒh‚ðŽÀs‚·‚é‚Ɛ¶¬‚³‚ê‚éƒGƒ‰[ƒƒbƒZ[ƒW‚Å Œ©‚邱‚Æ‚ª‚Å‚«‚Ü‚·:
  
    $_ **= $_ , / {$_} / for 2 .. 42;

=item * •Ç‚ðæ‚è‰z‚¦‚é‚É‚Í

‚±‚ÌŒÀŠE‚ð‰ñ”ð‚·‚é•û–@‚Æ‚µ‚āA’åœA’ms‚³‚ñ‚ªlˆÄ‚µ‚½ˆÈ‰º‚Ì•û–@‚ª‚ ‚è‚Ü‚·B

  2002-01-17: ’·‚¢•¶Žš—ñ‚ɑ΂·‚鐳‹K•\Œ»ŒŸõ
  http://homepage1.nifty.com/nomenclator/perl/shiftjis.htm#long
  
  # ˆê‰ñ‚¾‚¯ƒ}ƒbƒ`
  my $Apad = '(?:(?:\A|[\x00-\x80\xA0-\xDF])(?:[\x81-\x9F\xE0-\xFC]{2})*?)';
  my $str1 = ('‚ ' x 100000) . 'ƒAƒCABC';
  $str1 =~ /$Apad([A-Z]+)/o;
  print "$1\n"; # "ABC" ‚Æ•\Ž¦‚³‚ê‚éB
  
  # ƒOƒ[ƒoƒ‹ƒ}ƒbƒ`
  my $Gpad = '(?:(?:\G|[\x00-\x80\xA0-\xDF])(?:[\x81-\x9F\xE0-\xFC]{2})*?)';
  my $str2 = '‚ ' x 100000 . 'ƒAƒCABC'. '‚¨' x 100000 . 'XYZ';
  my @array = $str2 =~ /$Gpad([A-Z]+)/go;
  print "@array\n"; # "ABC XYZ" ‚Æ•\Ž¦‚³‚ê‚éB

\A ‚Æ \G ‚ªŽg‚¢•ª‚¯‚ç‚ê‚Ä‚¢‚é‚Ì‚Å‚·‚ªA\G ‚͍ŏ‰‚ÉŽg‚í‚ê‚é‚Æ‚«‚Í \A ‚Æ“¯‚¶‚悤‚É‹@”\
‚·‚é‚̂ŁAŽÀÛ‚É‚Í \G ‚Ì•û–@‚ЂƂ‚¾‚¯‚Å‚æ‚¢‚Å‚µ‚傤B

  ³‹K•\Œ»‚̃NƒH[ƒg•—‚̉‰ŽZŽq
  http://perldoc.jp/docs/perl/5.16.1/perlop.pod#Regexp32Quote-Like32Operators
  
  \G assertion (\G ƒAƒT[ƒg)
  
  (‘O—ª)ˆÈ‘O‚É /g ƒ}ƒbƒ`‚ð“K—p‚µ‚Ä‚¢‚È‚¢ƒ^[ƒQƒbƒg•¶Žš—ñ‚ɑ΂µ‚Ä /g ‚È‚µ‚Å \G ‚ðŽg‚¤‚ƁA
  •¶Žš—ñ‚̐擪‚Ƀ}ƒbƒ`‚·‚é \A ƒAƒT[ƒg‚ðŽg‚¤‚Ì‚Æ “¯‚¶‚±‚Æ‚É‚È‚è‚Ü‚·B(Œã—ª)

=item * ‚ ‚Ə­‚µŽc‚Á‚Ä‚¢‚é–â‘è‚ւ̑Ήž

ã‹L‚̃y[ƒW‚É‚Í

  ˆêƒoƒCƒg•¶Žš‚©A“ñƒoƒCƒg•¶Žš‚Ì‚¤‚¿‘æ“ñƒoƒCƒg‚ª [\x40-\x7E\x80\xA0-\xDF] ‚ŏI‚í‚é‚à‚Ì
  ‚ªA­‚È‚­‚Æ‚à“K“–‚ÈŠÔŠu‚ŁiãŒÀ‚É’B‚µ‚È‚¢‚¤‚¿‚ɁjoŒ»‚·‚ê‚΁AƒGƒ‰[‚ɂȂ炸‚ɏˆ—‚·
  ‚邱‚Æ‚ª‚Å‚«‚Ü‚·BiŠm—¦“I‚È–â‘è‚Å‚·‚̂ŁAŠ®‘S‚Å‚Í‚ ‚è‚Ü‚¹‚ñBj

‚Æ‚ ‚èA‘SƒoƒCƒg‚ª US-ASCII ‚ō\¬‚³‚ê‚Ä‚¢‚éƒf[ƒ^‚̏ꍇ‚Í‚¤‚Ü‚­‚¢‚«‚Ü‚¹‚ñB
‚»‚̂悤‚ȏꍇ‚̓Aƒ“ƒJ[ƒŠƒ“ƒO‚ð

  qr{\G.*?}s

‚É‚·‚邱‚ƂőΉž‚µ‚Ü‚·B

=item * ‚Ü‚Æ‚ß‚é‚Æ

ˆÈã‚Ì‘S‚Ä‚ðl—¶‚µ‚āAÄ‚у}ƒ‹ƒ`ƒoƒCƒgƒAƒ“ƒJ[ƒŠƒ“ƒO‚ðl‚¦‚é‚ƈȉº‚̂悤‚É‚È‚è‚Ü‚·B

  qr{\G(?(?=.{0,32766}\z)(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC])*?|(?(?=[\x00-\x80\xA0-\xDF\xFD-\xFF]+\z).*?|(?:.*?[\x00-\x80\xA0-\xDF\xFD-\xFF](?:[^\x00-\x80\xA0-\xDF\xFD-\xFF]{2})*?)))}oxms
  
  ‰ðà
  
  qr{\G  # \G ƒAƒT[ƒg‚Æ \A ƒAƒT[ƒg‚ðŒ“‚Ë‚é
       (?(?=.{0,32766}\z)  # ‘Ώە¶Žš—ñ‚ª 32,766 ƒIƒNƒeƒbƒgˆÈ‰º‚Å‚ ‚ê‚Î
                         (?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC])*?  # ‚±‚ꂪƒ}ƒ‹ƒ`ƒoƒCƒgƒAƒ“ƒJ[ƒŠƒ“ƒO‚ÉŽg‚í‚ê‚é
                                                                                    |  # 32,767 ƒIƒNƒeƒbƒgˆÈã‚ŁA‚È‚¨‚©‚Â
                                                                                     (?(?=[\x00-\x80\xA0-\xDF\xFD-\xFF]+\z)  # ‘SƒoƒCƒg‚ªƒVƒ“ƒOƒ‹ƒoƒCƒgƒR[ƒhƒZƒbƒg‚ō\¬‚³‚ê‚Ä‚¢‚é‚È‚ç‚Î
                                                                                                                           .*?  # ‚±‚ꂪƒAƒ“ƒJ[ƒŠƒ“ƒO‚ÉŽg‚í‚ê‚é
                                                                                                                              |  # ‚»‚êˆÈŠO‚̏ꍇ‚Í
                                                                                                                               (?:.*?[\x00-\x80\xA0-\xDF\xFD-\xFF](?:[^\x00-\x80\xA0-\xDF\xFD-\xFF]{2})*?)  # ‚±‚ꂪƒ}ƒ‹ƒ`ƒoƒCƒgƒAƒ“ƒJ[ƒŠƒ“ƒO‚ÉŽg‚í‚ê‚é
                                                                                                                                                                                                          ))}oxms

MSWin32 ŠÂ‹«‚Ì ActivePerl ‚̃o[ƒWƒ‡ƒ“ 5.6 ˆÈ~(Perl5.10.0‚àŠÜ‚Ý‚Ü‚·)A‚ ‚é‚¢‚Í‚»‚Ì‘¼
‚Ì Perl ‚̃o[ƒWƒ‡ƒ“ 5.10.1 ˆÈ~‚̏ꍇ‚É‚±‚̃}ƒ‹ƒ`ƒoƒCƒgƒAƒ“ƒJ[ƒŠƒ“ƒO‚ªŽg‚í‚ê‚Ü‚·B
‚»‚êˆÈŠO‚̏ꍇ‚́A‚±‚ê‚Ü‚Å‚Ç‚¨‚è

  qr{\G(?:[\x81-\x9F\xE0-\xFC][\x00-\xFF]|[^\x81-\x9F\xE0-\xFC])*?}oxms

‚ªŽg‚í‚ê‚Ü‚·B

=back

=head1 ŠÂ‹«•Ï”

 ‚±‚̃\ƒtƒgƒEƒFƒA‚Í”r‘¼§Œä‚É flock ŠÖ”‚ðŽg—p‚µ‚Ü‚·Bƒtƒ@ƒCƒ‹‚ª“ÇŽæ‚è‰Â”\‚É‚È‚é‚Ü‚Å
 ‚ ‚é‚¢‚͏‘ž‚݉”\‚É‚È‚é‚܂ŃvƒƒOƒ‰ƒ€‚ÌŽÀs‚̓uƒƒbƒN‚³‚ê‚Ü‚·B
 ‚±‚ê‚ðŠÂ‹«•Ï” SJIS_NONBLOCK ‚ð’è‹`‚·‚邱‚ƂŃuƒƒbƒN‚³‚¹‚È‚¢‚悤‚É‚·‚邱‚Æ‚ª‚Å‚«‚Ü
 ‚·B

 —á:

   SET SJIS_NONBLOCK=1

 (’l '1' ‚͈Ӗ¡‚ðŽ‚½‚È‚¢‚̂ʼn½‚Å‚à\‚¢‚Ü‚¹‚ñ)

=head1 MacJPerl ‚Ì‹@”\

 }‘‚Æ Web ã‚̏î•ñ‚ðŽQl‚É‚µ‚Ä MacOS ‚ɑΉž‚µ‚Ä‚Ý‚Ü‚µ‚½BŽÀ‹@‚ª‚È‚¢‚½‚߂ɃeƒXƒg‚ª
 ‚Å‚«‚Ä‚¢‚Ü‚¹‚ñB“®ì•ñAƒoƒO•ñ“™’¸‚¯‚é‚Æ‚Æ‚Ä‚à‚ ‚肪‚½‚¢‚Å‚·B
 
 ŽÀs‚ɂ͈ȉº‚̃\ƒtƒgƒEƒFƒA‚ª•K—v‚Å‚·B
 1. MacPerl ƒ‚ƒWƒ…[ƒ‹
 2. Mac::Files ƒ‚ƒWƒ…[ƒ‹
 3. ToolServer
 4. MPW(Macintosh Programmer's Workshop)

=head1 ƒoƒO‚Ɛ§ŒÀŽ–€‚ƌ݊·«

‚±‚̃\ƒtƒgƒEƒFƒA‚́AŽ„‚Ì”\—Í‚ðs‚­‚µ‚āAƒeƒXƒg‚µ‚ďƍ‡‚µ‚Ü‚µ‚½B‚»‚¤‚Å‚ ‚Á‚Ä‚àA‘½‚­
‚̐³‹K•\Œ»‚ðŠÜ‚Þƒ\ƒtƒgƒEƒFƒA‚́A‚ ‚é’ö“x‚̃oƒO‚ðŽ”‚¤‚±‚Æ‚ð‚Ü‚Ê‚ª‚ê‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB
‚æ‚Á‚āA‚à‚µ‚ ‚È‚½‚̃XƒNƒŠƒvƒg‚Å‚Í‚È‚­‚āASjisƒ\ƒtƒgƒEƒFƒA‚̃oƒO‚ðŒ©‚Â‚¯‚½‚Ì‚È‚çA
Å¬ŒÀ‚̃eƒXƒgƒR[ƒh‚ɐ؂è‹l‚ß‚½ã‚ŁAìŽÒ‚Ü‚Å•ñ‚µ‚Ä’¸‚¯‚é‚Ə•‚©‚è‚Ü‚·B

‚ ‚é‚¢‚Í‚à‚Á‚Æ—L—p‚ȃc[ƒ‹‚É‚·‚邽‚ß‚Ì‚æ‚¢ƒAƒCƒfƒBƒA‚ª‚ ‚Á‚½‚È‚çAŠF‚Æ‹¤—L‚µ‚Ä’¸‚¯‚é
‚Æ‚ ‚肪‚½‚¢‚Å‚·B

=over 2

=item * format

    ƒIƒŠƒWƒiƒ‹‚Ì Perl ‚Æ‹@”\‚ª“¯‚¶‚Å‚·(ShiftJIS ‚ɑΉž‚µ‚Ä‚¢‚Ü‚¹‚ñ)B

=item * ³‹K•\Œ»‚̃NƒƒCƒXƒ^

    ³‹K•\Œ»‚̃NƒƒCƒXƒ^ (?s) ‚Æ (?i) ‚Í“––ʁAŽÀ‘•‚³‚ê‚È‚¢‚Å‚µ‚傤B
    ƒNƒƒCƒXƒ^ (?s) ‚Í /s CüŽq‚Æ .(ƒhƒbƒg) ‚Æ \N ‚Å‘ã—p‚Å‚«‚Ü‚·B
    ƒNƒƒCƒXƒ^ (?i) ‚Í \F ` \E ‚ōH•v‚µ‚Ä‹Lq‚µ‚È‚¢‚Æ‚¢‚¯‚Ü‚¹‚ñB

=item * chdir

    perl5.005 ‚Å‚ ‚ê‚Ώí‚É chdir() ‚𐳏í‚ÉŽÀs‚Å‚«‚Ü‚·B

    DOS•—‚̃VƒXƒeƒ€($^O ‚Ì’l‚ª MSWin32, NetWare, symbian, dos ‚Ì‚¢‚¸‚ê‚©‚Ì
    ê‡)‚́AˆÈ‰º‚̐§ŒÀŽ–€‚ª‚ ‚è‚Ü‚·B

    perl5.006 ‚Ü‚½‚Í perl5.00800 ‚̏ꍇ‚Å•¶ŽšƒR[ƒh(0x5C)‚ŏI‚í‚éƒfƒBƒŒƒNƒgƒŠ
    ‚ðŽw’肵‚ÄŽÀs‚·‚é‚É‚Í jacode.pl ƒ‰ƒCƒuƒ‰ƒŠ‚ª•K—v‚Å‚·B

    perl5.008001ˆÈ~, perl5.010, perl5.012, perl5.014, perl5.016, perl5.018,
    perl5.020 ‚É‚Ä•¶ŽšƒR[ƒh(0x5C)‚ŏI‚í‚éƒfƒBƒŒƒNƒgƒŠ‚ðŽw’肵‚ÄŽÀs‚·‚é‚Æ‚«A
    COMMAND.COM ‚ ‚é‚¢‚Í cmd.exe ‚É‚æ‚Á‚Ä 8dot3name Œ`Ž®‚Ì’Z‚¢–¼‘O‚ðŽæ“¾‚Å‚«‚½
    ê‡‚Í chdir() ‚ª¬Œ÷‚µ‚Ü‚·B‚½‚¾‚µAchdir() Œã‚̃JƒŒƒ“ƒgƒfƒBƒŒƒNƒgƒŠ‚Ì
    ÅI‚̃TƒuƒfƒBƒŒƒNƒgƒŠ‚Í 8dot3name Œ`Ž®‚Ì’Z‚¢–¼‘O‚É‚È‚è‚Ü‚·B

    ŽQlƒŠƒ“ƒN
    Bug #81839
    chdir does not work with chr(0x5C) at end of path
    http://bugs.activestate.com/show_bug.cgi?id=81839

=item * ¶•Ó’l‚Æ‚µ‚Ä‚Ì Sjis::substr

    ƒo[ƒWƒ‡ƒ“ 5.14 –¢–ž‚Ì Perl ‚̏ꍇASjis::substr ‚Í CORE::substr ‚Ƃ͈قȂèA
    ¶•Ó’l‚Æ‚µ‚Ĉµ‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB•¶Žš—ñ‚̈ꕔ•ª‚ð•ÏX‚µ‚½‚¢ê‡‚́ASjis::substr
    ‚Ì4”Ԗڂ̈ø”‚Æ‚µ‚Ä’uŠ·‚¦Œã‚Ì•¶Žš—ñ‚ðŽw’肵‚Ü‚·B
    
    Sjis::substr($string, 13, 4, "JPerl");

=item * “ÁŽê•Ï” $` ‚Æ $& ‚ðŽg‚¤‚Æ‚«‚Í /( ³‹K•\Œ»‘S‘Ì‚ðƒLƒƒƒvƒ`ƒƒ )/ ‚·‚é•K—v‚ª‚ ‚è‚Ü‚·

    ‚È‚º‚È‚ç‚΁AˆÈ‰º‚̂悤‚É•ÏŠ·‚³‚êA$1 ‚ð—˜—p‚·‚邽‚ß‚Å‚·B
 
    -------------------------------------------------------------------------------------------
    ˆ—‘O          ˆ—Œã               ŽÀs‚³‚ê‚é“à—e
    -------------------------------------------------------------------------------------------
    $`              Esjis::PREMATCH()    CORE::substr($&,0,CORE::length($&)-CORE::length($1))
    ${`}            Esjis::PREMATCH()    CORE::substr($&,0,CORE::length($&)-CORE::length($1))
    $PREMATCH       Esjis::PREMATCH()    CORE::substr($&,0,CORE::length($&)-CORE::length($1))
    ${^PREMATCH}    Esjis::PREMATCH()    CORE::substr($&,0,CORE::length($&)-CORE::length($1))
    $&              Esjis::MATCH()       $1
    ${&}            Esjis::MATCH()       $1
    $MATCH          Esjis::MATCH()       $1
    ${^MATCH}       Esjis::MATCH()       $1
    $'              $'                   $'
    ${'}            ${'}                 $'
    $POSTMATCH      Esjis::POSTMATCH()   $'
    ${^POSTMATCH}   Esjis::POSTMATCH()   $'
    -------------------------------------------------------------------------------------------

=item * ³‹K•\Œ»‚ð“K—p‚·‚镶Žš—ñ‚Ì’·‚³‚̏ãŒÀ

    ‘Oq‚Ì‚Æ‚¨‚èAƒGƒXƒP[ƒvŒã‚̐³‹K•\Œ»‚ɂ̓}ƒ‹ƒ`ƒoƒCƒgƒAƒ“ƒJ[ƒŠƒ“ƒOˆ—‚Ì‚½
    ‚ß‚Ì‹Lq ${Esjis::anchor} ‚ª’ljÁ‚³‚ê‚Ü‚·‚ªA‚»‚Ì’†‚ÉŠÜ‚Ü‚ê‚é \G ‚̐§–ñ‚ðŽó
    ‚¯‚Ü‚·BMSWin32”Å‚ÌActivePerl5.6ˆÈ~(5.10.0‚àŠÜ‚Ý‚Ü‚·)A‚ ‚é‚¢‚Í‘¼‚ÌPerl‚Ì
    ê‡‚Í5.10.1ˆÈ~‚Å‚È‚¯‚ê‚΁A•¶Žš—ñ‚Ì32,767ƒoƒCƒg‚ð’´‚¦‚éˆÊ’u‚Ń}ƒbƒ`‚³‚¹‚é
    ‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB
 
    ŽQlƒŠƒ“ƒN
    
    In 5.10.0, the * quantifier in patterns was sometimes treated as {0,32767}
    http://perldoc.perl.org/perl5101delta.html
    
    [perl #116379] \G can't treat over 32767 octet
    http://www.nntp.perl.org/group/perl.perl5.porters/2013/01/msg197320.html
    
    perlre - Perl regular expressions
    http://perldoc.perl.org/perlre.html
    
    perlre length limit
    http://stackoverflow.com/questions/4592467/perlre-length-limit

=item * “WŠJ‚·‚é‚Æ‹ó‚ɂȂ鐳‹K•\Œ»’†‚̕ϐ”

    ‹ó‚̃Šƒeƒ‰ƒ‹•¶Žš—ñ‚Ƃ͈قȂèA³‹K•\Œ»’†‚É“WŠJ‚³‚ꂽ•Ï”‚Ì’l‚ª‹ó•¶Žš—ñ‚Å‚ ‚Á
    ‚Ä‚àA’¼‘O‚ɐ¬Œ÷‚µ‚½³‹K•\Œ»‚ÍŽg‚í‚ê‚Ü‚¹‚ñB

=item * ??, m?? “à‚̐§ŒÀ

    ?? ‚Ü‚½‚Í m?? ‚Ì“à•”‚Ń}ƒ‹ƒ`ƒoƒCƒg•¶Žš‚ɑ΂µ‚Ä {n,m} {n,} {n} * + ‚È‚Ç‚Ì—ÊŽw
    ’èŽq‚ð•t‚¯‚½‚¢ê‡‚́A‚»‚Ì•¶Žš‚ð ( ) ‚ň͂ñ‚Å‹Lq‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B‚»‚ÌŒ‹‰ÊA
    $1,$2,$3,... ‚Í‚¸‚ê‚Ä‚µ‚Ü‚¤‚½‚߁A‚»‚Ì‹Lq‚ðC³‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B
    ‚È‚¨ ?? ‚Ü‚½‚Í m?? ‚̓fƒŠƒ~ƒ^‚ª ? ‚Ȃ̂ŁA(?: ) ‚â—ÊŽw’èŽq‚Ì ? {n,m}? {n,}?
    {n}? ‚Í‹Lq‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB

=item * Œã“Ç‚ÝŒ¾–¾

    Œã“Ç‚ÝŒ¾–¾(—Ⴆ‚Î (?<=[A-Z]))‚ª’¼‘O‚Ì“ñƒoƒCƒg•¶Žš‚Ì‘æ“ñƒoƒCƒg‚ÉŒë‚Á‚ă}ƒbƒ`
    ‚·‚邱‚Ƃɂ͑Ώˆ‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB
    —Ⴆ‚΁A'ƒAƒCƒE' =~ /(?<=[A-Z])([ƒAƒCƒE])/ ‚ðŽÀs‚·‚é‚ƃ}ƒbƒ`‚µ‚Ä $1 ‚Í 'ƒC'
    ‚É‚È‚è‚Ü‚·‚ªA‚±‚ê‚͐³‚µ‚­‚ ‚è‚Ü‚¹‚ñB

=item * ³‹K•\Œ»‚̏CüŽq /a /d /l /u

    ‚±‚̃\ƒtƒgƒEƒFƒA‚̃Rƒ“ƒZƒvƒg‚́A‚ЂƂ‚̃XƒNƒŠƒvƒg’†‚̃Šƒeƒ‰ƒ‹•¶Žš—ñ‚␳‹K•\Œ»
    ‚̃Šƒeƒ‰ƒ‹•”•ª‚É•¡”‚Ì•„†‰»•ûŽ®‚ð—˜—p‚µ‚È‚¢‚悤‚É‚·‚邱‚Æ‚Å‚·B]‚Á‚ďCüŽq
    /a /d /l /u ‚ðƒTƒ|[ƒg‚µ‚Ü‚¹‚ñB
    \d ‚ÍÌ‚à¡‚à [0-9] ‚ðˆÓ–¡‚µ‚Ü‚·B

=item * –¼‘O•t‚«•¶Žš

    —Ⴆ‚΁A\N{GREEK SMALL LETTER EPSILON}A\N{greek:epsilon}A\N{epsilon} ‚̂悤
    ‚È–¼‘O•t‚«•¶Žš‚Í—˜—p‚Å‚«‚Ü‚¹‚ñB

=item * ³‹K•\Œ»‚ÌUnicode‘®«

    ³‹K•\Œ»‚ÌUnicode‘®«‚Í—˜—p‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñBPerl5.18‚ŒljÁ‚³‚ꂽ (?[])
    \•¶‚à—˜—p‚Å‚«‚Ü‚¹‚ñB‚¢‚Ü‚Ì‚Æ‚±‚ë‚»‚ê‚ç‚ðƒTƒ|[ƒg‚·‚é—\’è‚Í‚ ‚è‚Ü‚¹‚ñB

=item * –³Ž‹‚³‚ê‚é ${^WIN32_SLOPPY_STAT} ‚Ì’l

    Microsoft Windows ã‚Å chr(0x5c) ‚ŏI‚í‚éƒpƒX‚ðŽw’肵‚ătƒ@ƒCƒ‹ƒeƒXƒg(‰‰ŽZŽq)A
    ‚ ‚é‚¢‚Í lstat()Astat() ‚ðŽÀs‚·‚é‚ƁA${^WIN32_SLOPPY_STAT} ‚ɐ^‚Ì’l‚ªÝ’肳‚ê
    ‚Ä‚¢‚éê‡‚Å‚à‚»‚̃tƒ@ƒCƒ‹‚ðƒI[ƒvƒ“‚µ‚Ä’²‚ׂ܂·B

=item * •¶Žš—ñ‚¨‚æ‚ѐ³‹K•\Œ»‚̃fƒŠƒ~ƒ^

    qq//, q//, qw//, qx//, qr//, m//, s///, tr///, y/// ‚̃fƒŠƒ~ƒ^‚Æ‚µ‚ăƒCƒhƒLƒƒ
    ƒ‰ƒNƒ^‚ðŽg—p‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB

=back

=head1 ìŽÒ

‚±‚̃vƒƒWƒFƒNƒg‚Í ˆî—t € ina@cpan.org ‚É‚æ‚Á‚ÄŽn‚Ü‚è‚Ü‚µ‚½B

=head1 ’˜ìŒ 

‚±‚̃\ƒtƒgƒEƒFƒA‚̓tƒŠ[ƒ\ƒtƒgƒEƒFƒA‚Å‚·B‚ ‚È‚½‚Í Perl ‚Æ“¯‚¶ƒ‰ƒCƒZƒ“ƒX
‚ÌŒ³‚ōĔz•z‹y‚ѕύX‚ðs‚¤‚±‚Æ‚ªo—ˆ‚Ü‚·BÚ‚µ‚­‚Í perlartistic ‚ðŽQÆ‚µ‚Ä
‚­‚¾‚³‚¢B

‚±‚̃\ƒtƒgƒEƒFƒA‚Í—L—p‚Å‚ ‚邱‚Æ‚ðŠè‚Á‚ĔЕz‚³‚ê‚Ü‚·‚ªA*‘S‚­‚Ì–³•ÛØ* 
‚Å‚·B¤‹Æ‰Â”\«‚̕ۏ؂â“Á’è‚Ì–Ú“I‚Ö‚Ì“K‡«‚́AŒ¾ŠO‚ÉŽ¦‚³‚ꂽ‚à‚Ì‚àŠÜ
‚ß‘S‚­‘¶Ý‚µ‚Ü‚¹‚ñB

=head1 ƒVƒtƒgJISƒR[ƒh‚Æ‚Í(“ú–{Œêî•ñˆ—‚æ‚è)

ƒVƒtƒgJIS•„†‰»‚́Aƒ}ƒCƒNƒƒ\ƒtƒgŽÐ‚É‚æ‚èŠJ”­‚³‚ꂽA“ú–{‚̃Rƒ“ƒsƒ…[ƒ^‚ōłà‚æ‚­
—p‚¢‚ç‚ê‚é•„†‰»•ûŽ®‚Å‚·BƒVƒtƒgJIS‚́uMSŠ¿Žš(MicrosoftŠ¿Žš)vA‚Ü‚½‚́uSJIS
(ShiftJIS‚Ì—ªÌ)v‚Æ‚àŒÄ‚΂ê‚Ä‚¢‚Ü‚·B

‚©‚‚ēú–{‚̃Rƒ“ƒsƒ…[ƒ^ƒ†[ƒU‚Í”¼Šp•Ð‰¼–¼‚µ‚©Žg‚¦‚È‚©‚Á‚½‚½‚߁A]—ˆ•ûŽ®‚Ƃ̌݊·«
‚ðˆÛŽ‚·‚é–Ú“I‚ŃVƒtƒgJIS‚ªŠJ”­‚³‚ê‚Ü‚µ‚½B

ƒVƒtƒgJIS‚É‚¨‚¢‚ẮA16i”‚Å 0x81`0x9F ‚Ü‚½‚Í 0xE0`0xEF ‚Ì”ÍˆÍ‚ðŽ‚ÂƒIƒNƒeƒbƒg
‚É‚æ‚Á‚Ä1•¶Žš2ƒIƒNƒeƒbƒgƒ‚[ƒh‚ªŠJŽn‚µ‚Ü‚·B‚»‚µ‚Ä‚±‚̃IƒNƒeƒbƒg‚́A‚»‚±‚©‚çŽn‚Ü‚é
2ƒIƒNƒeƒbƒg•¶Žš‚Ì‘æ1ƒIƒNƒeƒbƒg‚Æ‚µ‚ďˆ—‚³‚ê‚Ü‚·B‘±‚­(‘æ2)ƒIƒNƒeƒbƒg‚́A16i”‚Å
0x40`0x7E ‚Ü‚½‚Í 0x80`0xFC ‚Ì”ÍˆÍ‚ðŽ‚Â’l‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‘æ1ƒIƒNƒeƒbƒg‚Ì
”͈͂͊g’£ASCII•¶ŽšƒZƒbƒgA‚‚܂èÅãˆÊƒrƒbƒg‚ªƒIƒ“‚É‚È‚Á‚½8ƒrƒbƒg•¶ŽšƒZƒbƒg‚͈̔Í
‚ÉŠ®‘S‚ÉŽû‚Ü‚Á‚Ä‚¢‚邱‚Æ‚É’–Ú‚µ‚Ä‚­‚¾‚³‚¢B‚Ü‚½ƒVƒtƒgJIS‚́A”¼Šp•Ð‰¼–¼‚ÆASCII/JIS
ƒ[ƒ}Žš‚àƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B

ˆê•”‚̃VƒtƒgJISŽd—l(“Á‚Ƀ[ƒJŽd—l)‚ł́Aƒ†[ƒU’è‹`•¶Žš‚̃R[ƒh—̈æ‚âAê‡‚É‚æ‚Á‚Ä
‚Í”¼Šp•Ð‰¼–¼‹ó”’•¶Žš‚̃R[ƒhˆÊ’u‚à’è‹`‚³‚ê‚Ä‚¢‚Ü‚·B‚à‚µ–{Ši“I‚ȏî•ñŒðŠ·‚ð–]‚Þ‚Ì‚Å
‚ ‚ê‚΁A‚±‚̂悤‚ȃR[ƒh—̈æ‚âƒR[ƒhˆÊ’u‚Í•s“s‡‚Å‚·B‚Æ‚¢‚¤‚Ì‚àA‚±‚̂悤‚È•¶Žš‚́A
•Ê‚Ì“ú–{Œê•„†‰»•ûŽ®(‚‚܂èJIS‚ÆEUC)‚̃R[ƒhˆÊ’u‚É•ÏŠ·‚Å‚«‚È‚¢‚悤‚É•„†‰»‚³‚ê‚Ä‚µ
‚Ü‚¤‚©‚ç‚Å‚·B

=head1 ƒEƒBƒLƒyƒfƒBƒA‚É‚æ‚éuShift_JISv‚Ì’è‹`

Shift_JIS (2011.10.27 00:00:00 JST). In Wikipedia: The Free Encyclopedia.
Retrieved from
http://ja.wikipedia.org/wiki/Shift_JIS

o“T: ƒtƒŠ[•S‰ÈŽ–“TwƒEƒBƒLƒyƒfƒBƒA(Wikipedia)x

Shift_JISiƒVƒtƒgƒWƒXj‚́AŒ»Ý‘½‚­‚̃pƒ\ƒRƒ“ã‚̃tƒ@ƒCƒ‹“à‚Å“ú–{Œê‚ð•\‚·‚½‚ß
‚ÉŽg‚í‚ê‚Ä‚¢‚镶ŽšƒR[ƒh‚Å‚ ‚éB‚©‚‚Ă̓xƒ“ƒ_[‚É‚æ‚é“ÆŽ©Šg’£‚ðŠÜ‚Þ•¶ŽšƒR[ƒh
ŒQ‚ɑ΂·‚éžB–†‚È–¼Ì‚Å‚ ‚Á‚½‚ªAŒ»Ý‚Í•W€‰»•¶‘JIS X 0208‚Ì•‘®‘1‚Å‹K’肳‚ê
‚Ä‚¢‚éBuShift_JISv‚ÍIANA‚É‚¨‚¯‚é“o˜^–¼‚Å‚ ‚éB

Shift_JIS‚Ì’a¶

1980”N‘ãAƒpƒ\ƒRƒ“—p16ƒrƒbƒgCPU‚Ì•‹y‚à‚ ‚¢‚Ü‚Á‚āAŠ¿Žš‚≼–¼‚ð•\Ž¦‰Â”\‚ȃn[
ƒhƒEƒFƒA‚ð”õ‚¦‚½ƒpƒ\ƒRƒ“‚ª‘±X‚Æ”­”„‚³‚ꂽB‚»‚Ì‚½‚߁A“ú–{Œê‚ð•\Œ»‚Å‚«‚镶Žš
•„†‰»•ûŽ®‚ª–͍õ‚³‚ê‚Ä‚¢‚½iShift_JIS‚ðuƒVƒtƒgJISƒR[ƒhv‚ƌĂñ‚Å•„†‰»•¶Žš
W‡i•¶ŽšƒR[ƒhj‚Ì–Ê‚Ì‚Ý‚ðl‚¦‚é‹c˜_‚ª‚ ‚邪A‚±‚±‚Å‚Í•¶Žš•„†‰»•ûŽ®‚Ì–Ê‚É
Å“_‚ð“–‚Ä‚éjB

•¶Žš•„†‰»•ûŽ®Shift_JIS‚̐݌vŽÒ‚ç‚́Aæs‚µ‚Ä‚æ‚­—˜—p‚³‚ê‚Ä‚¢‚½JIS C 6220
iŒ»Ý‚ÌJIS X 0201j‚Ì8ƒrƒbƒg•„†iˆÈ‰ºu‰p”ŽšE”¼ŠpƒJƒivj‚ƁAJIS C 6226
iŒ»Ý‚ÌJIS X 0208AˆÈ‰ºuŠ¿Žšvj‚Ì—¼•¶ŽšW‡‚ð•\Œ»‚µ‚悤‚Æ‚µ‚½B‚Ü‚½Aƒtƒ@
ƒCƒ‹‚Ì‘å‚«‚³‚⏈—ŽžŠÔ‚Ì’Zk‚ð}‚邽‚߁AƒGƒXƒP[ƒvƒV[ƒPƒ“ƒX‚È‚µ‚ō¬Ý‰Â”\‚É
‚·‚邱‚Æ‚ðŠé}‚µ‚½B

JIS C 6220‚ÆJIS C 6226‚Ì2‚‚͂Ƃà‚ɁAISO 2022‚Å•¶ŽšW‡‚ðØ‚è‘Ö‚¦‚Ä—˜—p‚·‚é
ÝŒv‚ª‚ ‚Á‚½BISO 2022‚ÉŠî‚­•¶Žš•„†‰»•ûŽ®‚ł́A‰p”ŽšA”¼ŠpƒJƒiAŠ¿Žš‚Í‚»‚ê
‚¼‚êA8ƒrƒbƒg•„†‹óŠÔ‚Ì’†‚ÌGL/GR‚Æ‚¢‚¤—̈æ‚Ì1‚‚ði‚½‚¾‚µŠ¿Žš‚Í2‰ñjŽg‚¤‚±‚Æ‚Å
•\Œ»‚Å‚«‚éB‚à‚µ‰p”Žš‚ÆŠ¿Žš‚Ì2‚‚ðƒGƒXƒP[ƒvƒV[ƒPƒ“ƒX‚È‚µ‚ō¬Ý‚µ‚½‚¢‚È‚çA
‰p”Žš‚ðGLAŠ¿Žš‚ðGR‚ÉŠ„‚è“–‚Ä‚é•û–@‚ª‚ ‚éBEUC-JP‚́A‚¨‚¨‚æ‚»‚»‚̂悤‚ÉŽÀ‘•
‚³‚ê‚Ä‚¢‚éB

‚µ‚©‚µAƒpƒ\ƒRƒ“‚Å‚Í‚·‚łɁAJIS X 0201‚Ì8ƒrƒbƒg•„†A‚‚܂èGL‚ɉp”ŽšAGR‚É1ƒo
ƒCƒgƒJƒ^ƒJƒii”¼ŠpƒJƒ^ƒJƒij‚ðŠ„‚è“–‚Ä‚½•„†‚ª•‹y‚µ‚Ä‚¢‚½B‰p”Žš‚Æ1ƒoƒCƒgƒJ
ƒ^ƒJƒi‚Ì2‚‚𓮂©‚·‚±‚Ƃ́A•¶Žš‰»‚¯‚ÌŒ´ˆö‚ɂȂ邽‚ß”ð‚¯‚é•K—v‚ª‚ ‚Á‚½B‚»‚Ì
‚½‚߁AISO 2022‚̘g“à‚̗̈æ‚ÉŠ¿Žš‚ð¬Ý‚³‚¹‚邱‚Ƃ͍¢“‚Á‚½B

1982”NAŠ¿Žš‚Ì•„†ˆÊ’u‚ð•¡ŽG‚Ɉړ®iƒVƒtƒgj‚µA•„†‹óŠÔ‚ÌŒ„ŠÔ‚ɉŸ‚µž‚Þ
Shift JIS‚ª’a¶‚µ‚½B‚±‚ê‚ðŽÀŒ»‚·‚邽‚߂ɂ́AŠ¿Žš‚Ì1ƒoƒCƒg–Ú‚Æ‚µ‚āAISO 2022
‚É‚¨‚¯‚éGRiA1(16)-FE(16)j—̈æ‚É3•ª‚Ì1Žc‚µ‚Ä‚¢‚½–¢Žg—p—̈æ‚ɉÁ‚¦AISO 2022‚É
‚¨‚¢‚Ä”ñŽg—p‚ÌCRi80(16)-9F(16)j—̈æ‚ðŽg—p‚·‚邱‚Æ‚Æ‚µ‚½B‚½‚¾‚µAGLi21(16)
-7E(16)j—̈æ‚É‚¨‚¢‚ẮAJIS X 0201‚Ì‹L†‚É“–‚½‚é•”•ª‚Í‹É—Í”ð‚¯‚½B‚³‚ç‚É2ƒoƒC
ƒg–ڂɂ́AISO 2022‚Ƃ͈قȂèA‰p”ŽšE”¼ŠpƒJƒi‚ÉŽg—pÏ‚݂̗̈æ‚ð‚àŠÜ‚ށAGLA
CRAGR‚É‚ ‚½‚éŠe—̈æ‚Ì‚Ù‚Ú‘S‚Ä‚ðŽg‚¤•K—v‚ª‚ ‚Á‚½B

ƒ}ƒCƒNƒƒ\ƒtƒgi“ú–{–@ljŒ³‰ï’·‚̌Ð식‚É‚æ‚é‚ƁAShift_JIS‚̐§’è‚ɂ́AƒAƒX
ƒL[Aƒ}ƒCƒNƒƒ\ƒtƒgi•ÄjAŽO•H“d‹@Aƒ}ƒCƒNƒƒ\ƒtƒgƒEƒFƒAEƒAƒ\ƒVƒGƒCƒcAƒf
ƒWƒ^ƒ‹ƒŠƒT[ƒ`i•Äj‚ªŠÖ‚í‚èA“Á‚ɃAƒXƒL[‚ÌŽR‰º—Ç‘ ‚ª’†S‚Æ‚È‚Á‚č쐬‚µ‚½
‚à‚Ì‚¾‚Æ‚¢‚¤B‚±‚ê‚ɑ΂·‚éˆÙà‚Æ‚µ‚āA‹ž“s‘åŠw•‹³Žö‚̈À‰ªFˆê‚́Aƒ}ƒCƒNƒƒ\
ƒtƒgƒEƒFƒAEƒAƒ\ƒVƒGƒCƒc‚ÆŽO•H“d‹@‚Ì‚Ý‚Ì‹¤“¯ŠJ”­‚¾‚ÆŽå’£‚µ‚Ä‚¢‚½‚ªAŽR‰º–{l
‚Ì”­Œ¾‚É‚æ‚èˆÀ‰ª‚ÍŽ©à‚ð“P‰ñ‚·‚é”­Œ¾‚ð‚µ‚Ä‚¢‚éB‚Ü‚½ŒÃ‚­‚ÍLife with UNIX‚Ì
–󏑁iISBN 4-7561-0783-4j‚́uUNIXl–¼Ž–“Tv–|–ó”ʼnÁ•M•”•ªip. 45j‚ŁA[£
O‹±‚ɁuMSŠ¿ŽšƒR[ƒh‚̍ìŽÒ‚̈êlv‚Æ‚¢‚¤Ð‰î•¶‚ª‘‚©‚ê‚Ä‚¢‚½B

Shift_JIS‚Ì•W€‰»

Shift_JIS‚́A•„†‰»•¶ŽšW‡‚Æ‚»‚Ì•¶Žš•„†‰»•ûŽ®‚Ì—¼•û‚ðŠÜ‚ÞŒ»ŽÀ‚Ì–â‘è‚ð‰ðŒˆ‚·
‚邽‚ß‚Ì‹Zp‚Å‚ ‚éB‚»‚ê‚䂦AJIS X 0208‚Ì•¶ŽšW‡‚ð—˜—p‚µ‚Ä‚Í‚¢‚é‚à‚̂́A
ISO 2022‚Ì•„†‰»‚Ì•ûj‚͈̔͂̊O‚É‚ ‚éB

‚µ‚©‚µŒ»Ý‚ł́AJIS X 0208:1997‚Ì•‘®‘1‚ɁAuƒVƒtƒg•„†‰»•\Œ»v‚Æ‚¢‚¤–¼‘O‚Å
Žd—l‚ª’è‹`‚³‚ê‚Ä‚¢‚éB‚±‚ê‚́Aƒfƒtƒ@ƒNƒgƒXƒ^ƒ“ƒ_[ƒh‚Æ‚È‚Á‚Ä‚¢‚é‹Zp‚ɂ‚¢‚Ä
‚͏oŽ©‚ð–â‘è‚Æ‚¹‚¸A‚Æ‚à‚©‚­•W€‰»‚µ‚Ä‚µ‚Ü‚¨‚¤‚Æ‚¢‚¤ˆÓ}‚ª“ú–{H‹Æ•W€’²¸‰ï
 (JISC) ‚É‚ ‚Á‚Ä‚Ì‚±‚Æ‚Å‚ ‚éB

JIS X 0208‚ÌŠg’£‹KŠi‚Å‚ ‚éJIS X 0213‚ł́A2000”N§’è‚̏‰”Å‚Å•‘®‘1‚Æ‚µ‚Ä
Shift_JISX0213‚ª’è‚ß‚ç‚ꂽB2004”N‰ü³Žž‚Ì10•¶Žš’ljÁ‚É”º‚Á‚āAShift_JIS-2004
‚Æ–¼Ì‚ª•ÏX‚³‚ꂽB

IANA‚Å‚àuShift_JISv‚Æ‚¢‚¤–¼‘O‚ªŠ„‚è“–‚Ä‚ç‚ê‚Ä‚¢‚éB

—˜“_‚ÆŒ‡“_

—˜“_
1. ‘SŠp•¶Žš‚ƁAJIS X 0201‚Å’è‹`‚µ‚½‚¢‚í‚ä‚锼ŠpƒJƒi•¶Žš‚𓯈ê‚̃R[ƒh‘ÌŒn‚Å
   •\Œ»‚Å‚«‚éB
2. “ú–{ŒêŠÂ‹«‚É‚¨‚¢‚ẮAMS-DOS‚Å“ú–{Œê—p•¶ŽšƒR[ƒh‚Æ‚µ‚č̗p‚³‚ê‚ĈȗˆAƒpƒ\
   ƒRƒ“‚É‚¨‚¢‚Ĉ³“|“I‚È•‹y“x‚ª‚ ‚èA‚»‚Ì‘¼‚Ì•¶Žš•„†‰»•ûŽ®‚É”ä‚ׂăf[ƒ^ŒðŠ·
   ‰Â”\«‚ª‚‚¢B

Œ‡“_
1. ”¼ŠpƒJƒi‚Ì‚½‚߂̗̈æ‚ðŠm•Û‚µ‚½ŠÖŒWãAƒR[ƒhƒV[ƒNƒGƒ“ƒX‚ª‹æ“_”ԍ†‚́u‹æv
   ‚Ì‹æØ‚è‚Å‚Í‚È‚¢‰ÓŠ‚Å•ª’f‚µ‚Ä‚¢‚éB‚±‚Ì‚½‚߁AƒR[ƒh”ԍ†‚ð‰‰ŽZ‚Å‹‚ß‚éÛ‚Í
   ”ÏŽG‚ȏˆ—‚ª•K—v‚Å‚ ‚éB
2. 2ƒoƒCƒg–Ú‚É80(16)–¢–ž(ASCII‚̃R[ƒh—̈æ)‚ªŒ»‚ê‚éB‚±‚Ì‚½‚߁A•¶Žš‚Ì‹æØ‚è‚Ì
   ”»’è‚ÉŽèŠÔ‚ª‚©‚©‚éBƒtƒ@ƒCƒ‹‚â“d•¶‚̐擪‚©‚當ŽšƒR[ƒh‚Ì”»’è‚ð‚·‚éê‡‚Í‚æ‚¢
   ‚ªAŒã‚ë‚©‚ç”»’è‚ð‚µ‚æ‚¤‚Æ‚·‚é‚ƁAÅˆ«‚̏ꍇAæ“ª‚Ü‚Å‚½‚Ç‚ç‚È‚¢‚Æ‚¢‚¯‚È‚¢
   ‚±‚Æ‚ª‚ ‚邽‚߁AƒvƒƒOƒ‰ƒ€‚̍ì‚è•û‚ɍH•v‚ª•K—v‚É‚È‚éB‚Ü‚½A‚±‚̗̈æ‚ÉŠÜ‚Ü
   ‚ê‚éˆê•”‚Ì•¶Žš‚̈µ‚¢‚Ì‚½‚߁Aƒ}ƒ‹ƒ`ƒoƒCƒg‚ÌEUC-JPAUTF-8‚È‚Ç‚É”ä‚ׁAƒvƒƒO
   ƒ‰ƒ~ƒ“ƒOã‚̈µ‚¢‚ª“‚¢iŽŸ€‚ðŽQÆjB
3. JIS•â•Š¿Žš‚ª•\Œ»‚Å‚«‚È‚¢B•â•Š¿Žš‚Ì•¶Žš”‚ÍShift_JIS‚̃R[ƒh–¢“o˜^•”•ª‚É
   Žû‚Ü‚ç‚È‚¢B
4. •¶ŽšW‡‚ɂ‚¢‚Ä‚ÍŽÀ‘•ƒxƒ“ƒ_‚ªJIS X 0208‚Å‹K’肳‚ê‚Ä‚¢‚È‚¢‹@ŽíˆË‘¶‚ÌŠg’£‚ð
   Ž{‚µ‚Ä‚¢‚邱‚Æ‚ª‘½‚­A‚±‚¤‚¢‚Á‚½Šg’£•”•ª‚ÉŠÖ‚µ‚Ă̓f[ƒ^ŒðŠ·‰Â”\«‚ª’á‚¢B

2ƒoƒCƒg–Ú‚ª5C“™‚ɂȂ肤‚邱‚Æ‚É‚æ‚é–â‘è

Shift_JIS‚ł́Auƒ\vu‰\v‚ȂLjꕔ‚ÌŽš‚Ì2ƒoƒCƒg–ڂɁA5C(16)iShift_JIS‚ł́
‹L†AASCII‚Ȃǂł̓oƒbƒNƒXƒ‰ƒbƒVƒ…j‚ðŽg—p‚µ‚Ä‚¢‚éB‘½‚­‚̃vƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê
 (CAPerlABourne Shell‚È‚Ç‘½”) ‚ł́A‚±‚Ì5C(16)‚ðƒGƒXƒP[ƒv•¶Žš‚Æ‚µ‚Ä‚¢‚éB
‚µ‚½‚ª‚Á‚āAƒ\[ƒXƒR[ƒh‚╶Žšƒf[ƒ^‚̏ˆ—‚É‚¨‚¢‚ÄShift_JIS‚ð‘z’肵‚Ä‚¢‚È‚¢ƒv
ƒƒOƒ‰ƒ~ƒ“ƒOŠÂ‹«‚Å‚Í–â‘肪‹N‚±‚éB‚±‚Ì–â‘è‚́A“¯‚¶‚悤‚É2ƒoƒCƒg–ڂ͈̔͂É5C(16)
‚ðŠÜ‚ÞBig5‚âAGBK‚È‚Ç‚Ì•¶ŽšƒR[ƒh‚Å‚à”­¶‚µ‚¤‚éB

‚Ü‚½A5C(16)ˆÈŠO‚ɂ‚¢‚Ä‚à—ÞŽ—‚Ì–â‘肪”­¶‚·‚邱‚Æ‚ª‚ ‚éB‚½‚Æ‚¦‚΁AUnix‚â
MS-DOS‚Ȃǂ̃VƒFƒ‹ã‚Å7C(16) (Shift_JIS‚âASCII‚ł̓o[ƒeƒBƒJƒ‹ƒo[) ‚ðŠÜ‚Þ•¶Žš
i|Aƒ|A„|A‰|AŠ|A‹|AŒ|Accj‚ðƒtƒ@ƒCƒ‹–¼‚ÉŽg—p‚µ‚悤‚Æ‚·‚é‚ƁAƒpƒCƒv
‹L†‚Æ”FŽ¯‚³‚êA³í‚Ƀtƒ@ƒCƒ‹‚ªì¬‚³‚ê‚È‚©‚Á‚½‚èA“ǂݍž‚Ý‚ª•s—Ç‚É‚È‚Á‚½‚è
‚·‚邱‚Æ‚ª‚ ‚éB

Œ»Ý‚Å‚àAƒVƒ“ƒOƒ‹ƒoƒCƒg•¶ŽšƒR[ƒh‘Ήž‚̃\ƒtƒgƒEƒFƒA‚ðShift_JISŠÂ‹«‚ÅŽg—p‚·‚é
‚ƁA‰üs‚È‚Ç‚Ì“®ì‚âƒtƒ@ƒCƒ‹–¼‚̏ˆ—‚È‚Ç‚É‚µ‚΂µ‚΂±‚Ì–â‘肪‚‚«‚Ü‚Æ‚¤B‚±‚Ì
•s‹ï‡‚ðµ‚­A2ƒoƒCƒg–Ú‚É5C(16)‚ðŽ‚Â•¶Žš‚Í‘­‚Ɂu‚¾‚ß•¶Žšv‚ƌĂ΂êA‚±‚Ì’†‚É
‚́uƒ\vu\vu”\vu•\v‚ȂLjê”Ê‚ÉŽg—p•p“x‚̍‚‚¢•¶Žš‚àŠÜ‚Ü‚ê‚éB

‚±‚Ì–â‘è‚ð‰ñ”ð‚·‚é“`““I‚È•û–@‚Æ‚µ‚āAƒ\[ƒXƒR[ƒh‘S‘Ì‚ðEUCƒR[ƒh‚âUTF-8‚È‚Ç‚É
•ÏŠ·‚µ‚Ä‚©‚çƒRƒ“ƒpƒCƒ‹‚µ‚½‚èŽÀs‚µ‚½‚è‚·‚é•û–@‚ª‚ ‚éi—áFPerl ‚Ìencodingƒvƒ‰
ƒOƒ}jB‚ ‚é‚¢‚́uƒ\v¨uƒ\\v‚̂悤‚ɁA2ƒoƒCƒg–Ú‚Ì’¼‘O(u’¼Œãv‚Ə‘‚©‚ê‚Ä‚¢‚é
î•ñ‚ÍŒë‚è‚ŁA³‚µ‚­‚́u’¼‘OvB‚»‚¤‚Å‚È‚¯‚ê‚΁A‚¾‚ß•¶Žš‚ðƒGƒXƒP[ƒv‚·‚邱‚Æ‚ª
‚Å‚«‚È‚¢B)‚ɃGƒXƒP[ƒv•¶Žš‚Ì5C(16)‚ð‹Lq‚µAu‚¾‚ß•¶Žšv‚𕶎š‚Æ‚µ‚Đ³‚µ‚­”FŽ¯
‚³‚¹‚é•û–@‚à‚ ‚éi—áFPerl‚ÌSjisƒ\ƒtƒgƒEƒFƒAjB‚ ‚é‚¢‚Í•¶Žš‚Ü‚½‚Í•¶Žš—ñ‚Æ‚µ‚Ä
ˆµ‚킸‘Ώە¶Žš‚¨‚æ‚Ñ“à•”•\Œ»Œ`Ž®‚𐔒l‚Ì”z—ñ‚Æ‚µ‚Ä•ÏŠ·‚ðs‚¢AŽæ‚舵‚¤Û‚É•¶Žš
‚É•œ†‚µ‚Ĉµ‚¤•û–@‚à‚ ‚éi—áFPerl ‚ÌEncodeƒ‚ƒWƒ…[ƒ‹jB

—á

u\‚í‚È‚¢v‚Æ‚¢‚¤•¶Žš—ñ‚ª‚¢‚­‚‚©‚ÌŒfŽ¦”ƒ\ƒtƒg‚Łu‚úžÈ‚¢v‚Æ•¶Žš‰»‚¯‚·‚é—á
‚ª•p”É‚ÉŒ©‚ç‚ê‚éB

   \   ‚í   ‚È   ‚¢
  8d5c 82ed 82c8 82a2
  ƒoƒbƒNƒXƒ‰ƒbƒVƒ…‚É‚ ‚½‚é5c‚ª”²‚¯‚é‚ƁA
  8d   82ed 82c8 82a2
    ‚      È   ‚¢

u‚¢v‚Æ‚¢‚¤•¶Žš‚Ì‚Æ‚±‚ë‚ŃfƒR[ƒh‚ªÄ“¯Šú‚³‚êŒã‚Ì•¶Žš—ñ‚͐³í‚É–ß‚éB‚Ü‚½“¯—l
‚ɁuŒ|”\ŠEv‚ªuŒ|”ŠEv‚ɉ»‚¯‚é—á‚à‚ ‚éB 

   Œ|    ”\   ŠE
  8c7c 945c 8a45
  ƒoƒbƒNƒXƒ‰ƒbƒVƒ…‚É‚ ‚½‚é5c‚ª”²‚¯‚é‚ƁA
  8c7c 94   8a45
   Œ|    ”Š   E

  •\ 2ƒoƒCƒg–Ú‚É5C(16)‚ðŽ‚Â•¶Žšˆê—— •¶Žš •„†(16i) “ǂ݁EˆÓ–¡ 

  \   815C ƒ_ƒbƒVƒ…
  ƒ\   835C •Ð‰¼–¼‚́u‚»v
  „\   845C ƒLƒŠƒ‹•¶Žš‚̃EƒB
  ‡\/? 875C WindowsŠÂ‹«‚ł̓[ƒ}”Žš‚Ì9
            MacŠÂ‹«‚Å‚ÍGB(ƒMƒKƒoƒCƒg)
  ‰\   895C ‚¤‚킳B
  Š\   8A5C ŠC—¢
  ‹\   8B5C ‚ ‚´‚Þ‚­B¼‹\
  Œ\   8C5C ‚¯‚¢Bl–¼B
  \   8D5C ‚©‚Ü‚¦‚éB\‘¢
  Ž\   8E5C ƒJƒCƒRB—{Ž\
  \   8F5C Š¿”Žš‚Ì10B
  \   905C ‚à‚¤‚·A‚µ‚ñB\¿
  ‘\   915C ‚»A‚ЁBu‘]v‚̈óü•W€Žš‘́i³Žš‘́jB‘\‘·
  ’\   925C ‚½‚ñB’\y
  “\   935C ‚Í‚éB“\•t
  ”\   945C ‚Ì‚¤B”\—Í
  •\   955C ‚ ‚ç‚í‚·A‚Ђ傤B•\Œ»
  –\   965C ‚ ‚΂ê‚éA‚Ú‚¤B–\—Í
  —\   975C ‚ ‚ç‚©‚¶‚߁A‚æB—\”õ
  ˜\   985C ‚ë‚­B•î˜\
  ™\   995C ‚ƁA‚¤‚³‚¬Bu“ev‚ّ̈̎š
  š\   9A5C ‚©‚­Bš\ŒŒ
  ›\   9B5C ‚±‚¤B›\˜a(u˜a‚Ì”ñ‘Š·‚¦)
  œ\   9C5C ‚âB–퐶‚́u–ív‚̐³Žš‘Ì
  \   9D5C ‚¾B\•ß
  ž\   9E5C “È‚Ì•Ê‘Ì
  Ÿ\   9F5C ‚·‚·‚éA‚»‚¤A‚µ‚傤B
  à\   E05C ‚³‚炤A‚µ‚ã‚ñB
  á\   E15C ‚Ó‚²A‚Ù‚ñB
  â\   E25C ‚Æ‚éA‚Ö‚¢B
  ã\   E35C ‚ ‚âA‚³‚¢B
  ä\   E45C ‚Å‚ñA‚µ‚èBä\•”
  å\   E55C ‚ ‚¢B˜a‹Cå\X
  æ\   E65C G‚Ì‹ŒŽš‘Ì
  ç\   E75C ‘̂̌Κ
  è\   E85C ‚‚΁B“‚Ìè\(’Õ)B
  é\   E95C ‚Ü‚ñBé\“ª
  ê\   EA5C ƒoƒ“B’¹‚Ì–¼B
  úx   ED5C ‚µ‚ã‚ñB
  ûx   EE5C ‚¬‚å‚­B
  ú\   FA5C ‚킽A‚±‚¤B
  û\   FB5C ‚¬‚ñB

ƒR[ƒh‹óŠÔ‚É‚¨‚¯‚镶Žš”§ŒÀ

Shift_JIS‚Ì2ƒoƒCƒgƒR[ƒh‚Ì‹óŠÔ‚́A‘æ1ƒoƒCƒg‚ª81(16)-9F(16)‚È‚ç‚Ñ‚ÉE0(16)-
FC(16)A‘æ2ƒoƒCƒg‚ª40(16)-7E(16)‚È‚ç‚Ñ‚É80(16)-FC(16)‚Å‚ ‚éB‚µ‚½‚ª‚Á‚āA
60~188=11280•¶ŽšA‚³‚ç‚É1ƒoƒCƒgƒR[ƒh‚ª158•¶ŽšiƒXƒy[ƒX‚ðŠÜ‚݁ADEL‚͐”‚¦‚¸j
‚Å‚ ‚邽‚߁AŒv11438•¶Žš‚Æ‚È‚éB

‚È‚¨AShift_JIS-2004‚ł́A2ƒoƒCƒg•¶Žš‚ª11233•¶ŽšA1ƒoƒCƒg•¶Žš‚ª158•¶Žš‚Ì‚½‚߁A
‡Œv11391•¶Žš‚ðŽg—p‚µ‚Ä‚¢‚éB

Shift_JIS‚É‚¨‚¯‚éuƒVƒtƒgv‚Æ‚Í

Shift JIS‚́uƒVƒtƒgv‚Ƃ́A256~256‚Ì•½–Ê‚Ì’†‚Å•¶Žš‚ð•¡ŽG‚É"‚¸‚ç‚·"‚Æ‚¢‚¤ˆÓ–¡
‚́uƒVƒtƒgv‚Å‚ ‚éB

ISO-2022-JP‚ÍŽwŽ¦ƒV[ƒPƒ“ƒX‚ÅŠ¿Žš‚ƃAƒ‹ƒtƒ@ƒxƒbƒg‚ðØ‚è‘Ö‚¦‚é•„†‰»•ûŽ®‚Å‚ ‚éB
‚Ü‚½AEUC-JP‚͕⏕Š¿Žš‚Æ”¼ŠpƒJƒ^ƒJƒi‚ðƒVƒ“ƒOƒ‹ƒVƒtƒg‚ňꎞ“I‚ɐ؂è‘Ö‚¦‚ÄŽg‚¤
•„†‰»•ûŽ®‚Å‚ ‚éB‚±‚ê‚ç‚Ì•„†‰»•ûŽ®‚ōs‚í‚ê‚Ä‚¢‚éAŠe•¶ŽšW‡‚Ì–Ê‚ðƒVƒtƒgƒR[
ƒh‚É‚æ‚Á‚Đ؂è‘Ö‚¦‚é‘€ì‚àuƒVƒtƒgv‚ƌĂ΂ê‚邪AShift_JIS‚́uƒVƒtƒgv‚Í‚±‚ê
‚ç‚Ƃ͈قȂéˆÓ–¡‚Å‚ ‚éB‚Ü‚½ƒrƒbƒg‚ð‚¸‚ç‚·‘€ìiƒrƒbƒgƒVƒtƒgj‚Æ‚àˆÙ‚È‚éB

Shift_JIS‚Æ‹æ“_”ԍ†

Shift_JIS‚ª•„†‰»‚̑Ώۂɂ·‚镶ŽšW‡‚́AJIS X 0208‚Å‚ ‚éB‚±‚Ì•„†‰»•¶ŽšW‡
‚ɂ́A‹æ“_”ԍ†‚Æ‚¢‚¤ŠT”O‚ª‘¶Ý‚·‚éB‚±‚ê‚́A94~94‚Ì•¶Žš•\‚̍s‚Æ—ñ‚̔ԍ†‚Ì‘g
‚Å‚ ‚éB

Shift_JIS‚ł́A8140(16)-FCFC(16)‚Æ‚¢‚¤‚悤‚ɁAJIS X 0208‚Æ‚Í‚Ü‚Á‚½‚­ˆá‚Á‚½ƒR[
ƒh‘ÌŒn‚Å‚ ‚邪AJIS X 0208‚ðŒvŽZ‚É‚æ‚è•ÏŒ`‚µ‚½‚à‚Ì‚Å‚ ‚邽‚߁A‹æ“_”ԍ†‚ð—p‚¢‚Ä
•¶Žš‚̃R[ƒhƒ|ƒCƒ“ƒg‚ðŽw‚µŽ¦‚·‚±‚Æ‚ª‘½‚¢B“à—e‚ɂ‚¢‚ẮAJIS X 0208‚Ì1`94‹æ
‚Æ“¯‚¶‚Å‚ ‚éB‚½‚¾‚µA‹@ŽíˆË‘¶•¶Žš‚ł́AƒVƒtƒgJIS‚Ì•„†‹óŠÔ‚©‚ç‹t¬‚µA94‹æ‚Ì
‰º•û‚É‚ ‚½‚©‚à120‹æ‚Ü‚Å‚ªŠg’£‚µ‚Ä‚¢‚é‚©‚̂悤‚Ɉµ‚¤‚±‚Æ‚ª‚ ‚éB95‹æˆÈã‚́A
ISO/IEC 2022‚É‘¥‚Á‚½JIS X 0208‚̍\‘¢‚Å‚Í‘¶Ý‚µ“¾‚È‚¢‚̂ŁA–{—ˆ‚Í‚¨‚©‚µ‚¢B
ƒxƒ“ƒ_“ÆŽ©‚Ì”ñŒöŽ®‚ÈŠT”O‚Å‚ ‚éB‚È‚¨AJIS X 0213‚Ì‹KŠi‚̈ꕔ‚Å‚ ‚é
Shift_JISX0213•„†‰»•\Œ»‚É‚¨‚¢‚ẮA‘æ1ƒoƒCƒgF0(16)ˆÈ~‚ð2–Ê‚Ì•¶Žš‚ÉŠ„‚è“–‚Ä‚Ä
‚¨‚èA•S‰½‹æ‚Æ‚¢‚¤‚悤‚È‘¶Ý‚µ‚È‚¢‹æ”ԍ†‚Í“oê‚µ‚È‚¢B

ux-sjisv‚ƁuMS_Kanjiv

ux-sjisv‚ƁuMS_Kanjiv‚Í‚Æ‚à‚ɁAHTMLƒhƒLƒ…ƒƒ“ƒg‚́ucharsetv‚ÌŽw’è‚É
uShift_JISv‚Ì•Ê–¼‚Æ‚µ‚ÄŽg‚¤‚±‚Æ‚ªo—ˆ‚éB

ux-sjisv‚ÍIANA‚ɁuShift_JISv‚Æ‚¢‚¤–¼‘O‚ð“o˜^‚·‚é‘O‚ɁANetscape Navigator
2.0‚É‚¨‚¢‚ÄŽg‚Á‚Ä‚¢‚½ƒGƒ“ƒR[ƒfƒBƒ“ƒO‚ÌŽw’èŽq–¼‚Å‚ ‚éBˆê•”‚ÌHTML¶¬ƒ\ƒtƒg‚ª
Ž©“®‚Å‚±‚ÌŽw’èŽq‚ð‘g‚ݍž‚ñ‚ÅŽg‚Á‚Ä‚¢‚éB‚»‚Ì‚½‚ß”FŽ¯‰Â”\‚ȃuƒ‰ƒEƒU‚ª‚ ‚邪A
uShift_JISv‚ɏ‘‚«Š·‚¦‚邱‚Ƃ𐄏§‚µ‚Ä‚¢‚éB

uMS_Kanjiv‚ÍIANA‚É‚æ‚èuShift_JISv‚Ì•Ê–¼‚Æ‚µ‚ÄŠ„‚è“–‚Ä‚ç‚ê‚Ä‚¢‚éB


=head1 ‚±‚̃\ƒtƒgƒEƒFƒA‚Å‚Ì "ShiftJIS"

‚±‚̃\ƒtƒgƒEƒFƒA‚Å‚¢‚¤ "ShiftJIS" ‚͏ã‹L‚́uƒR[ƒh‹óŠÔ‚É‚¨‚¯‚镶Žš”§ŒÀv‚Ì
11438•¶Žš‚·‚×‚Ä‚ðˆµ‚¦‚邱‚Æ‚ð–ÚŽw‚µ‚Ä‚¢‚Ü‚·B‚»‚Ì‚½‚߂ɃAƒ‹ƒSƒŠƒYƒ€‚Í2‚ÂŽg‚í
‚ê‚Ä‚¢‚Ü‚·B

* ƒAƒ‹ƒSƒŠƒYƒ€ 1

    ƒIƒNƒeƒbƒg‚Ì•À‚Ñ‚©‚當Žš‚ðŽæ‚èo‚·‚Æ‚«A1ƒIƒNƒeƒbƒgƒR[ƒh‚Æ2ƒIƒNƒeƒbƒgƒR[ƒh
    ‚Ì‹æ•Ê‚Í‘æ1ƒIƒNƒeƒbƒgƒR[ƒh‚݂̂ōs‚í‚ê‚Ü‚·B‘æ2ƒIƒNƒeƒbƒg‚͍l—¶‚³‚ê‚Ü‚¹‚ñB

    1ƒIƒNƒeƒbƒgƒR[ƒh:
      0x00-0x80, 0xA0-0xDF, 0xFD-0xFF

    2ƒIƒNƒeƒbƒgƒR[ƒh:
      ‘æ1ƒIƒNƒeƒbƒg  0x81-0x9F, 0xE0-0xEF, 0xF0-0xFC
      ‘æ2ƒIƒNƒeƒbƒg  0x00-0xFF (‚·‚ׂÄ)

    •s³‚È1ƒIƒNƒeƒbƒgƒR[ƒh:
      0x81-0x9F, 0xE0-0xFC
      * •¶Žš—ñ‚̍ŏIƒIƒNƒeƒbƒg‚ª2ƒIƒNƒeƒbƒgƒR[ƒh‚Ì‘æ1ƒIƒNƒeƒbƒg‚Æ“¯‚¶ê‡

ˆÈ‰º‚ɃR[ƒh•\‚ðŒfÚ‚µ‚Ü‚·B

        1ƒIƒNƒeƒbƒgƒR[ƒh•\

   0 1 2 3 4 5 6 7 8 9 A B C D E F 
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 0|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*| 0x00-0x80
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 1|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 2|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 3|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 4|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 5|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 6|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 7|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 8|*| | | | | | | | | | | | | | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 9| | | | | | | | | | | | | | | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 A|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*| 0xA0-0xDF
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 B|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 C|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 D|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 E| | | | | | | | | | | | | | | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 F| | | | | | | | | | | | | |*|*|*| 0xFD-0xFF
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                                 2ƒIƒNƒeƒbƒgƒR[ƒh•\
            ‘æ1ƒIƒNƒeƒbƒg                                    ‘æ2ƒIƒNƒeƒbƒg


   0 1 2 3 4 5 6 7 8 9 A B C D E F                 0 1 2 3 4 5 6 7 8 9 A B C D E F 
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 0| | | | | | | | | | | | | | | | |              0|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*| 0x00-0xFF
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 1| | | | | | | | | | | | | | | | |              1|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 2| | | | | | | | | | | | | | | | |              2|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 3| | | | | | | | | | | | | | | | |              3|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 4| | | | | | | | | | | | | | | | |              4|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 5| | | | | | | | | | | | | | | | |              5|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 6| | | | | | | | | | | | | | | | |              6|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 7| | | | | | | | | | | | | | | | |              7|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 8| |*|*|*|*|*|*|*|*|*|*|*|*|*|*|*| 0x81-0x9F    8|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 9|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|              9|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 A| | | | | | | | | | | | | | | | |              A|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 B| | | | | | | | | | | | | | | | |              B|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 C| | | | | | | | | | | | | | | | |              C|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 D| | | | | | | | | | | | | | | | |              D|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 E|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*| 0xE0-0xFC    E|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 F|*|*|*|*|*|*|*|*|*|*|*|*|*| | | |              F|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


•¶Žš—ñ‚̍ŏIƒIƒNƒeƒbƒg‚ª2ƒIƒNƒeƒbƒgƒR[ƒh‚Ì‘æ1ƒIƒNƒeƒbƒg‚Æ“¯‚¶ê‡

•s³‚Å‚ ‚Á‚Ä‚à–³Ž‹‚³‚ꂽ‚èAŽ©“®“I‚ɍ폜‚³‚ê‚邱‚Æ‚Í‚ ‚è‚Ü‚¹‚ñB
—Ⴆ‚΁AEsjis::chop ‚Í‚±‚̃IƒNƒeƒbƒg‚ð•Ô‚µ‚Ü‚·B

    *•s³‚È* 1ƒIƒNƒeƒbƒgƒR[ƒh

   0 1 2 3 4 5 6 7 8 9 A B C D E F 
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 0| | | | | | | | | | | | | | | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 1| | | | | | | | | | | | | | | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 2| | | | | | | | | | | | | | | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 3| | | | | | | | | | | | | | | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 4| | | | | | | | | | | | | | | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 5| | | | | | | | | | | | | | | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 6| | | | | | | | | | | | | | | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 7| | | | | | | | | | | | | | | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 8| |M|M|M|M|M|M|M|M|M|M|M|M|M|M|M| 0x81-0x9F
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 9|M|M|M|M|M|M|M|M|M|M|M|M|M|M|M|M|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 A| | | | | | | | | | | | | | | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 B| | | | | | | | | | | | | | | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 C| | | | | | | | | | | | | | | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 D| | | | | | | | | | | | | | | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 E|M|M|M|M|M|M|M|M|M|M|M|M|M|M|M|M|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 F|M|M|M|M|M|M|M|M|M|M|M|M|M| | | |  0xE0-0xFC
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


=head1 ƒxƒ“ƒ_•Ê SJIS ƒR[ƒhˆê——

http://home.m05.itscom.net/numa/cde/sjis-euc/sjis.html

 DEC PC                         0x00-0x7F, 0xA1-0xDF, (0x81-0x9F, 0xE0-0xFC)(0x40-0x7E, 0x80-0xFC)
 DEC WS                         0x00-0x7F, 0xA1-0xDF, (0x81-0x9F, 0xE0-0xFC)(0x40-0x7E, 0x80-0xFC)
 Fujitsu TrueType font (PC)     0x00-0x7F, 0xA1-0xDF, (0x81-0x9F, 0xE0-0xFC)(0x40-0x7E, 0x80-0xFC)
 Fujitsu FontCity font (PC)     0x00-0x7F, 0xA1-0xDF, (0x81-0x9F, 0xE0-0xFC)(0x40-0x7E, 0x80-0xFC)
 Hitachi PC                     0x00-0x7F, 0xA1-0xDF, (0x81-0x9F, 0xE0-0xFC)(0x40-0x7E, 0x80-0xFC)
 Hitachi WS                     0x00-0x7F, 0xA1-0xDF, (0x81-0x9F, 0xE0-0xFC)(0x40-0x7E, 0x80-0xFC)
 IBM                            0x00-0x7F, 0xA1-0xDF, (0x81-0x9F, 0xE0-0xFC)(0x40-0x7E, 0x80-0xFC)
 NEC Windows (PC)               0x00-0x7F, 0xA1-0xDF, (0x81-0x9F, 0xE0-0xFC)(0x40-0x7E, 0x80-0xFC)
 NEC DOS (PC)                   0x00-0x7F, 0xA1-0xDF, (0x81-0x9F, 0xE0-0xFC)(0x40-0x7E, 0x80-0xFC)
 SONY NEWS-OS                   0x00-0x7F, 0xA1-0xDF, (0x81-0x9F, 0xE0-0xFC)(0x40-0x7E, 0x80-0xFC)
 Sun Wabi                       0x00-0x7F, 0xA1-0xDF, (0x81-0x9F, 0xE0-0xFC)(0x40-0x7E, 0x80-0xFC)
 Unisys PC                      0x00-0x7F, 0xA1-0xDF, (0x81-0x9F, 0xE0-0xFC)(0x40-0x7E, 0x80-0xFC)
 HP Japan Japanese HP-15        0x00-0x7F, 0xA1-0xDF, (0x81-0x9F, 0xE0-0xFC)(0x40-0x7E, 0x80-0xFC)
 AT&T Japan                     0x00-0x7F, 0xA1-0xDF, (0x81-0x9F, 0xE0-0xFC)(0x40-0x7E, 0x80-0xFC)
 Mitsubishi Electric FONTRUNNER 0x00-0x7F, 0xA1-0xDF, (0x81-0x9F, 0xE0-0xFC)(0x40-0x7E, 0x80-0xFC)
 Concurrent Japan               0x00-0x7F, 0xA1-0xDF, (0x81-0x9F, 0xE0-0xFC)(0x40-0x7E, 0x80-0xFC)
 Informix ASCII INFORMIX V6 ALS 0x00-0x7F, 0xA1-0xDF, (0x81-0x9F, 0xE0-0xFC)(0x40-0x7E, 0x80-0xFC), (0xFD)(0xA1-0xFE)(0xA1-0xFE)
 Oracle Oracle7 (Release 7.1.3) 0x00-0x7F, 0xA1-0xDF, (0x81-0x9F, 0xE0-0xFC)(0x00-0xFF)
 Sybase SQL Server, Open Server 0x00-0x7F, 0xA1-0xDF, (0x81-0x9F, 0xE0-0xFC)(0x40-0x7E, 0x80-0xFC)
 
 “ú–{Œêî•ñˆ—(ISBN 4-89052-708-7)‚æ‚è
 
 Hewlett-Packard HP-15          0x00-0x7F, 0xA1-0xDF, (0x80-0xA0, 0xE0-0xFE)(0x21-0x7E, 0x80-0xFF)


* ƒAƒ‹ƒSƒŠƒYƒ€ 2

    ƒAƒ‹ƒSƒŠƒYƒ€ 1 ‚É‚àŠÖ‚í‚炸Atr/// ‚É‚æ‚蕶Žš‚͈̔͂ðŽw’肳‚ꂽê‡‚͈ȉº‚Ì•¶Žš
    ‚Ì‚Ý‚ª—LŒø‚Æ‚È‚è‚Ü‚·B

    1ƒIƒNƒeƒbƒgƒR[ƒh:
      0x00-0x80, 0xA0-0xDF, 0xFD-0xFF

    2ƒIƒNƒeƒbƒgƒR[ƒh:
      ‘æ1ƒIƒNƒeƒbƒg  0x81-0x9F, 0xE0-0xEF, 0xF0-0xFC
      ‘æ2ƒIƒNƒeƒbƒg  0x40-0x7E, 0x80-0xFC

—Ⴆ‚΁A[\x81\x00-\x82\xFF] ‚Ə‘‚©‚ꂽê‡‚Í [\x81\x82][\x40-\x7E\x80-\xFC] ‚ð
ˆÓ–¡‚µ‚Ü‚·B

ˆÈ‰º‚ɃR[ƒh•\‚ðŒfÚ‚µ‚Ü‚·B

        1ƒIƒNƒeƒbƒgƒR[ƒh•\

   0 1 2 3 4 5 6 7 8 9 A B C D E F 
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 0|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*| 0x00-0x80
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 1|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 2|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 3|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 4|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 5|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 6|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 7|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 8|*| | | | | | | | | | | | | | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 9| | | | | | | | | | | | | | | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 A|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*| 0xA0-0xDF
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 B|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 C|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 D|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 E| | | | | | | | | | | | | | | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 F| | | | | | | | | | | | | |*|*|*| 0xFD-0xFF
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


                                 2ƒIƒNƒeƒbƒgƒR[ƒh•\
            ‘æ1ƒIƒNƒeƒbƒg                                    ‘æ2ƒIƒNƒeƒbƒg

   0 1 2 3 4 5 6 7 8 9 A B C D E F                 0 1 2 3 4 5 6 7 8 9 A B C D E F 
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 0| | | | | | | | | | | | | | | | |              0| | | | | | | | | | | | | | | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 1| | | | | | | | | | | | | | | | |              1| | | | | | | | | | | | | | | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 2| | | | | | | | | | | | | | | | |              2| | | | | | | | | | | | | | | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 3| | | | | | | | | | | | | | | | |              3| | | | | | | | | | | | | | | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 4| | | | | | | | | | | | | | | | |              4|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*| 0x40-0x7E
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 5| | | | | | | | | | | | | | | | |              5|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 6| | | | | | | | | | | | | | | | |              6|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 7| | | | | | | | | | | | | | | | |              7|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*| |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 8| |*|*|*|*|*|*|*|*|*|*|*|*|*|*|*| 0x81-0x9F    8|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*| 0x80-0xFC
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 9|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|              9|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 A| | | | | | | | | | | | | | | | |              A|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 B| | | | | | | | | | | | | | | | |              B|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 C| | | | | | | | | | | | | | | | |              C|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 D| | | | | | | | | | | | | | | | |              D|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 E|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*| 0xE0-0xFC    E|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 F|*|*|*|*|*|*|*|*|*|*|*|*|*| | | |              F|*|*|*|*|*|*|*|*|*|*|*|*|*| | | |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


=head1 –Ú•W‚Æ‚µ‚Ä‚¢‚é‚à‚Ì

ƒvƒƒOƒ‰ƒ~ƒ“ƒO Perl ‘æ3”Å VOLUME 1 (ISBN 4-87311-096-3)
15Í Unicode ŽQÆ

Unicode ƒTƒ|[ƒg‚ª perl ‚É“±“ü‚³‚ê‚éˆÈ‘O‚́Aeq ‰‰ŽZŽq‚́A2‚‚̃XƒJƒ‰[•Ï”‚É‚æ‚Á
‚Ä•\‚³‚ꂽƒoƒCƒg—ñ‚ð‚½‚¾”ä‚ׂĂ¢‚Ü‚µ‚½Bperl5.8 ˆÈ~Aeq ‚́A2‚‚̃oƒCƒg—ñ‚ð”ä‚ׂé
‚Æ“¯Žž‚É UTF8 ƒtƒ‰ƒO‚ðl—¶‚µ‚Ü‚·B

/* ˆÈ‰º‚Í–³—‚É—‰ð‚µ‚悤‚Æ‚µ‚È‚­‚Æ‚à\‚í‚È‚¢B */

  perl5.8 ˆÈ~‚̏î•ñˆ—ƒ‚ƒfƒ‹
 
    +----------------------+---------------------+
    |     Text strings     |                     |
    +----------+-----------|    Binary strings   |
    |  UTF-8   |  Latin-1  |                     |
    +----------+-----------+---------------------+
    | UTF8     |            Not UTF8             |
    | Flagged  |            Flagged              |
    +--------------------------------------------+
    http://perl-users.jp/articles/advent-calendar/2010/casual/4

Perl ‚Ì•¶Žš—ñƒ‚ƒfƒ‹‚̍¬—‚́uƒoƒCƒiƒŠ•¶Žš—ñ(Binary strings)v‚Æ‚¢‚¤‘½‹`Œê‚ªŒ´ˆö
‚¾‚ÆŽv‚í‚ê‚Ü‚·B
uƒoƒCƒiƒŠ•¶Žš—ñ(Binary strings)v‚̈Ӗ¡
1. ”ñƒeƒLƒXƒg—ñ(Non-Text strings)
2. ƒfƒWƒ^ƒ‹ƒIƒNƒeƒbƒg—ñ(Digital octet string)

‚±‚ê‚ç‚Ì—pŒê‚ðŽg‚Á‚āAã‚̐}‚ð‚ ‚ç‚½‚߂ď‘‚¢‚Ä‚Ý‚Ü‚µ‚傤B

    +----------------------+---------------------+
    |     Text strings     |                     |
    +----------+-----------|   Non-Text strings  |
    |  UTF-8   |  Latin-1  |                     |
    +----------+-----------+---------------------+
    | UTF8     |            Not UTF8             |
    | Flagged  |            Flagged              |
    +--------------------------------------------+
    |            Digital octet string            |
    +--------------------------------------------+

Perl5.8 ‚ÅŽÀŽ{‚³‚ꂽu•¶Žš—ñv‚Æ‚¢‚¤Œ¾—t‚̈Ӗ¡‚̕ύXA•¶Žš—ñ‘€ì‚̃Cƒ“ƒ^ƒtƒF[ƒX
‚̕ύX‚ɂ‚¢‚āA‚¢‚Ü‚È‚¨ƒRƒ“ƒZƒ“ƒTƒX‚ª“¾‚ç‚ê‚Ä‚¢‚é‚悤‚É‚ÍŽv‚¦‚Ü‚¹‚ñB””N‚ÌŠÔŠu
‚ð‚¨‚¢‚Ä Perl ‚ð—˜—p‚·‚é‘命”‚̃vƒƒOƒ‰ƒ}‚ɑ΂µ‚āAŽÀ‘•‚Ì“s‡‚ð—‰ð‚µ‚Ä‚à‚炤‚Ì
‚Í–³—‚ª‚ ‚é‚ÆŽv‚¢‚Ü‚·B

‚»‚±‚ŁAŒ³‚Ì•û–@‚É–ß‚·‚±‚Æ‚É‚æ‚Á‚Ăǂ̂悤‚É‰ðŒˆ‚³‚ê‚é‚Ì‚©A‚Ù‚±‚è‚ɂ܂݂ꂽŒÃ‚¢
Programming Perl, 3rd ed. (–M–ó ƒvƒƒOƒ‰ƒ~ƒ“ƒOPerl ‘æ3”Å) ‚Ì402ƒy[ƒW‚ð‚à‚¤ˆê“x
‚Ђà‚Æ‚¢‚Ä‚Ý‚Ü‚µ‚傤EEEB

  UNIX/CŒ¾Œê“I‚È perl3 ˆÈ~A‚ ‚é‚¢‚Í‚±‚̃\ƒtƒgƒEƒFƒA‚É‚æ‚éî•ñˆ—ƒ‚ƒfƒ‹
 
    +--------------------------------------------+
    |    Text string as Digital octet string     |
    |    Digital octet string as Text string     |
    +--------------------------------------------+
    |       Not UTF8 Flagged, No Mojibake        |
    +--------------------------------------------+

—‘z“I‚ɂ́AˆÈ‰º‚Ì5‚‚̃S[ƒ‹‚ðŽÀŒ»‚µ‚悤‚ƍl‚¦‚Ä‚¢‚Ü‚·B

=over 2

=item * ƒS[ƒ‹1

    Šù‘¶‚̃oƒCƒgŽwŒü‚̃XƒNƒŠƒvƒg‚́AˆÈ‘Oˆµ‚Á‚Ä‚¢‚½Šù‘¶‚̃oƒCƒgŽwŒü‚̃f[ƒ^‚ɑ΂µ
    ‚āAˆÈ‘O‚Æ“¯—l‚É“®ì‚·‚ׂ«‚Å‚ ‚éB

    ‚±‚Ì–Ú•W‚Í‚±‚̃\ƒtƒgƒEƒFƒA‚ªAutf8 ƒvƒ‰ƒOƒ}‚̂悤‚É perl ‚ɑ΂·‚é’ljÁ‹@”\‚Å
    ‚ ‚邱‚Æ‚É‚æ‚Á‚Ä’B¬‚³‚ê‚Ä‚¢‚Ü‚·B‰½‚à•t‚¯‰Á‚¦‚È‚¢ perl ‚Í‚±‚ê‚Ü‚Å’Ê‚è‚Ì“®ì
    ‚ð‚·‚é‚Í‚¸‚Å‚·B

=item * ƒS[ƒ‹2

    Šù‘¶‚̃oƒCƒgŽwŒü‚̃XƒNƒŠƒvƒg‚́A‰½‚àŽè‚ð‰Á‚¦‚¸‚ɁA(‚»‚¤‚·‚邱‚Æ‚ª“KØ‚Å‚ ‚ê‚Î)
    V‚µ‚¢•¶ŽšŽwŒü‚̃f[ƒ^‚ɑ΂µ‚Ä‚à“®ì‚·‚é‚悤‚É‚È‚é‚ׂ«‚Å‚ ‚éB

    ‘gž‚݊֐” length, substr, index, rindex, pos ‚È‚Ç‚Ì•¶Žš—ñ‚Ì’·‚³‚âˆÊ’u‚ðˆµ‚¤
    ‚à‚͍̂¡‚Ü‚Å‚Ç‚¨‚è‚É1ƒIƒNƒeƒbƒg‚ð 1 ‚Ɛ”‚¦‚Ü‚·B‚±‚Ì•”•ª‚ɂ‚¢‚ĉ½‚àŽè‚͉Á
    ‚í‚è‚Ü‚¹‚ñB2ƒIƒNƒeƒbƒgƒR[ƒh1•¶Žš‚Ì length ‚Í 2 ‚É‚È‚è‚Ü‚·B

    ˆê•ûAƒXƒNƒŠƒvƒg’†‚̐³‹K•\Œ»‚́Aƒ}ƒ‹ƒ`ƒoƒCƒg•¶Žš‚Ì‚½‚߂̃Aƒ“ƒJ[ƒŠƒ“ƒOˆ—‚ð
    ‹Lq‚·‚é•K—v‚ª‚ ‚è‚Ü‚·‚ªA‚»‚ê‚ð‚ ‚È‚½‚É‘ã‚í‚Á‚Ä‚±‚̃\ƒtƒgƒEƒFƒA‚ªs‚¢‚Ü‚·B

    ƒS[ƒ‹1‚ƃS[ƒ‹2‚Ì“à—e‚ð}Ž¦‚µ‚Ü‚·B

                                   GOAL#1  GOAL#2
                            (a)     (b)     (c)     (d)     (e)
          +--------------+-------+-------+-------+-------+-------+
          | data         |  Old  |  Old  |  New  |  Old  |  New  |
          +--------------+-------+-------+-------+-------+-------+
          | script       |  Old  |      Old      |      New      |
          +--------------+-------+---------------+---------------+
          | interpreter  |  Old  |              New              |
          +--------------+-------+-------------------------------+
          Old --- Šù‘¶‚̃oƒCƒgŽwŒü
          New --- V‚µ‚¢•¶ŽšŽwŒü

    ƒf[ƒ^AƒXƒNƒŠƒvƒgAƒCƒ“ƒ^ƒvƒŠƒ^‚̐VE‹Œ‚ÉŠÖ‚µ‚āAã‚Ì (a) ‚©‚ç (e) ‚Ü‚Å‚Ì
    ‘g‡‚¹‚ª‚ ‚è‚Ü‚·B‚±‚Ì•¶‘‚ª‘‚©‚ꂽ“–Žž‚É‘¶Ý‚µ‚È‚©‚Á‚½ Encode ƒ‚ƒWƒ…[ƒ‹‚Æ
    ‚±‚̃\ƒtƒgƒEƒFƒAA‚¨‚æ‚Ñ‘¶Ý‚µ‚Ä‚¢‚½ JPerl ‚ð‘‚«‘«‚µ‚Ä‚Ý‚Ü‚µ‚傤B

                            (a)     (b)     (c)     (d)     (e)
                                          JPerl,japerl    Encode,Sjis
          +--------------+-------+-------+-------+-------+-------+
          | data         |  Old  |  Old  |  New  |  Old  |  New  |
          +--------------+-------+-------+-------+-------+-------+
          | script       |  Old  |      Old      |      New      |
          +--------------+-------+---------------+---------------+
          | interpreter  |  Old  |              New              |
          +--------------+-------+-------------------------------+
          Old --- Šù‘¶‚̃oƒCƒgŽwŒü
          New --- V‚µ‚¢•¶ŽšŽwŒü

    JPerl ‚ª‚Æ‚Ä‚à—D‚ê‚Ä‚¢‚闝—R‚Í (c) ‚̈ʒu‚É‚ ‚é‚©‚ç‚Å‚·B‚·‚È‚í‚¿“ú–{Œêˆ—
    ‚ðs‚¤‚½‚߂ɃXƒNƒŠƒvƒg‚É“Á•Ê‚È‹Lq‚ðs‚¤•K—v‚ª‚ ‚è‚Ü‚¹‚ñB
    (japerl ‚ª‚»‚Ì–ð–Ú‚ðˆø‚«Œp‚°‚Ü‚·‚悤‚ɁI)

=item * ƒS[ƒ‹3

    ƒXƒNƒŠƒvƒg‚́AV‚µ‚¢•¶ŽšŽwŒüƒ‚[ƒh‚Å‚àAˆÈ‘O‚̃oƒCƒgŽwŒüƒ‚[ƒh‚Æ“¯‚¶ƒXƒs[
    ƒh‚Å“®ì‚·‚ׂ«‚Å‚ ‚éB

    ‚»‚ê‚Í–³—B‚¾‚Á‚āAˆÈ‰º‚ÌŽžŠÔ‚ª•K—v‚¾‚à‚́B

    (1) ƒXƒNƒŠƒvƒg‚ðƒGƒXƒP[ƒv‚µ‚āAƒoƒCƒgŽwŒü Perl ‚ňµ‚¦‚é‚悤‚ɏˆ—‚·‚邽‚ß‚Ì
     ŽžŠÔB‚½‚¾‚µAˆ—‚³‚ꂽƒXƒNƒŠƒvƒg‚Í•Û‘¶‚Å‚«‚邽‚߁AŽŸ‰ñ‚©‚ç‚Í‚±‚ÌŽžŠÔ‚ð‚È‚­
     ‚·‚±‚Æ‚à‰Â”\‚Å‚·B

    (2) ƒGƒXƒP[ƒv‚³‚ꂽƒXƒNƒŠƒvƒg‚ªƒ}ƒ‹ƒ`ƒoƒCƒgƒAƒ“ƒJ[ƒŠƒ“ƒOˆ—‚ðs‚¢‚È‚ª‚çA
     ³‹K•\Œ»‚ðŽÀs‚·‚鎞ŠÔB

    ‚·‚Å‚É‘¶Ý‚·‚é ASCII ƒf[ƒ^‚Í1•¶Žš‚ª1ƒIƒNƒeƒbƒg‚ɃpƒbƒN‚³‚ê‚Ä‚¢‚Ü‚·B‚»‚Ì
    ƒf[ƒ^‚ƌ݊·«‚ð•Û‚¿‚È‚ª‚當ŽšŽí‚𑝂₻‚¤‚Æ‚·‚é‚ƁAISO-2022 ‚̂悤‚ɃGƒXƒP[
    ƒvƒV[ƒPƒ“ƒX‚ª•K—v‚Å‚ ‚Á‚½‚èAShiftJIS ‚â UTF-8 ‚̂悤‚É "ƒGƒXƒP[ƒvƒrƒbƒg"
    ‚ª•K—v‚É‚È‚Á‚½‚肵‚Ü‚·B‚±‚ê‚ç‚̃GƒXƒP[ƒvˆ—‚ª‰Á‚í‚邽‚߁AˆÈ‘O‚Æ“¯‚¶ƒXƒs[
    ƒh‚Å“®ì‚·‚ׂ«‚Å‚ ‚é‚Æ‚¢‚¤‚Ì‚Í–³—‚È–Ú•W‚¾‚ÆŽv‚¢‚Ü‚·B

    ‚¢‚‚̓ú‚© Larry Wall ‚³‚ñ‚É‚±‚̃S[ƒ‹‚Ì‚±‚Æ‚ðu‚Ë‚Ä‚Ý‚½‚¢‚Å‚·(ƒGƒŒƒx[ƒ^[‚Ì
    ’†‚Å)B

=item * ƒS[ƒ‹4

    Perl ‚́AƒoƒCƒgŽwŒü‚Ì Perl ‚Æ•¶ŽšŽwŒü‚Ì Perl ‚ÉŽ}•ª‚©‚ꂹ‚¸‚ɁA1‚‚̌¾Œê‚Å
    ‚ ‚葱‚¯‚é‚ׂ«‚Å‚ ‚éB

    JPerl ‚Í Perl Œ¾Œê‚𕪊ò‚³‚¹‚È‚¢‚悤‚É‚·‚邽‚߂ɁAƒCƒ“ƒ^ƒvƒŠƒ^‚𕪊ò‚³‚¹‚Ü‚µ‚½B
    ‚Å‚à Perl ƒRƒAƒ`[ƒ€‚̓Cƒ“ƒ^ƒvƒŠƒ^‚Ì•ªŠò‚ð–]‚ñ‚Å‚¢‚È‚¢‚Ì‚Å‚µ‚傤BŒ‹‰Ê“I‚ɃS[
    ƒ‹4‚Æ‚Í‚¤‚ç‚Í‚ç‚ÉPerlŒ¾Œê‚ª•ªŠò‚·‚邱‚Æ‚É‚È‚èAPerlƒRƒ~ƒ…ƒjƒeƒB‚͏k¬‚µ‚Ü‚µ‚½B

    ƒoƒCƒgŽwŒü‚Ì perl ‚Í‚·‚łɃoƒCƒiƒŠƒf[ƒ^‚ðˆµ‚¤‚±‚Æ‚ª‚Å‚«‚邽‚߁A•¶ŽšŽwŒü‚Ì
    perl ‚ð•Ê—§‚Ăō쐬‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB‚Ü‚½‚±‚̃\ƒtƒgƒEƒFƒA‚́A’P‚È‚éƒAƒvƒŠ
    ƒP[ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ€‚Ȃ̂ŁAPerl ƒRƒAƒ`[ƒ€‚©‚çáɂ܂ê‚邱‚Æ‚à‚È‚¢‚Å‚µ‚傤‚µA
    —U‚í‚ê‚éS”z‚à‚ ‚è‚Ü‚¹‚ñB

    ‚»‚ê‚É–â‘è‚ð Perl ƒXƒNƒŠƒvƒg‚Å‰ðŒˆ‚µ‚悤‚Æ‚·‚é‚È‚çAPerl ƒRƒ~ƒ…ƒjƒeƒB‚̃Tƒ|[ƒg
    ‚𓾂ç‚ê‚é‚Å‚µ‚傤B

    Sjisƒ\ƒtƒgƒEƒFƒA‚́A1‚‚̌¾ŒêE1‚‚̃Cƒ“ƒ^ƒvƒŠƒ^‚ðŽÀŒ»‚µ‚Ü‚·B

=item * ƒS[ƒ‹5

    JPerl ƒ†[ƒU‚ª Perl ‚Å JPerl ‚ð•ÛŽç‚Å‚«‚é‚悤‚É‚È‚éB

    JPerl ‚ª‚¢‚Â‚à‚ ‚È‚½‚Ì‚»‚΂ɂ ‚è‚Ü‚·‚悤‚É ...

=back

Programming Perl, 3rd ed. ‚ª‘‚©‚ꂽ ‚ɂ́AUTF8 ƒtƒ‰ƒO‚͐¶‚Ü‚ê‚Ä‚¨‚炸APerl ‚Í
ŠÈ’P‚ÈŽdŽ–‚ðŠÈ’P‚É‚Å‚«‚é‚悤‚ɐ݌v‚³‚ê‚Ä‚¢‚Ü‚µ‚½B‚±‚̃\ƒtƒgƒEƒFƒA‚Í“–Žž‚̂悤‚È
ƒvƒƒOƒ‰ƒ~ƒ“ƒOŠÂ‹«‚ð’ñ‹Ÿ‚µ‚Ü‚·B

=head1 Perl‚ÌŽå’£

=head2 ‰‚ß‚Ä‚ÌPerl xviii‚æ‚è

  ƒRƒ“ƒsƒ…[ƒ^‰ÈŠwŽÒ‚Ì’†‚É‚Í(“Á‚ÉŠÒŒ³Žå‹`ŽÒ‚½‚¿‚Í)”Û’è‚·‚éŽÒ‚à‚¢‚é‚Ì‚¾‚ªA
 lŠÔ‚Æ‚¢‚¤‚à‚Ì‚Í•Ï‚í‚Á‚½Œ`‚̐S‚ðŽ‚Á‚Ä‚¢‚é‚à‚Ì‚È‚Ì‚¾BS‚ÌŒ`‚Í•½’R‚Å‚Í‚È‚¢
 ‚̂ŁA‚Ђǂ­˜c‚߂邱‚Æ‚È‚µ‚É‚Í•½‚ç‚È–Ê‚ÉŽÊ‘œ‚·‚邱‚Æ‚Í‚Å‚«‚È‚¢B‚µ‚©‚µ‰ß‹Ž
 20”NˆÈã‚ɂ킽‚Á‚āAƒRƒ“ƒsƒ…[ƒ^ŠÒŒ³Žå‹`ŽÒ‚½‚¿‚Í’¼Œð«‚̐_“a‚Éæ삫AŽŸ‚¢‚Å
 —§‚¿ã‚ª‚é‚ƁA”Þ‚ç‚̐M•ò‚·‚é‹Ö—~“I‚Ȑ´—õ‚³‚ð’N‚©‚ê‚Æ‚È‚­à‚¢‚ĉñ‚Á‚½B

  ”Þ‚ç‚Ì”M—󂾂ªŒ©“–ˆá‚¢‚ÌŠè–]‚́AŒN‚½‚¿‚̐S‚ð”Þ‚ç‚ÌŽvl—lŽ®‚ɍ‡‚¤‚悤‚ɍì‚è
 •Ï‚¦‚āAŒN‚½‚¿‚ÌŽvlƒpƒ^[ƒ“‚ð‚ ‚éŽí‚Ì’´‰zŽŸŒ³‚Ì•½Œ´‚ɉŸ‚µž‚߂邱‚Æ‚¾‚Á‚½B
 •½–ʂɉŸ‚µž‚Ü‚ê‚é‚Æ‚¢‚¤‚±‚Ƃ́A‚Ü‚Á‚½‚­Šì‚Ñ‚Ì‚È‚¢‘¶Ý‚É‚È‚Á‚Ä‚µ‚Ü‚¤‚±‚Æ‚É
 “™‚µ‚¢B

=head2 ‰‚ß‚Ä‚ÌPerl ‘æ6”Å‚æ‚è

  ‚à‚µ‚±‚ê‚𓪒ɂ̎킾‚ÆŽv‚¤‚È‚çA‚»‚Ì’Ê‚è‚Å‚·B’N‚à‚±‚̂悤‚ȏ󋵂ðD‚ñ‚Å
 ‚¢‚é‚킯‚Å‚Í‚ ‚è‚Ü‚¹‚ñB‚Å‚àAPerl‚Í“ü—͂ƃGƒ“ƒR[ƒfƒBƒ“ƒO‚̈µ‚¢‚ÉŠÖ‚µ‚āA
 ƒxƒXƒg‚ðs‚­‚µ‚Ä‚­‚ê‚Ü‚·B‚à‚µ—ðŽj‚ðƒŠƒZƒbƒg‚µ‚Ä‚â‚è’¼‚¹‚é‚Ì‚È‚çA‚»‚ÌŽž‚É‚Í
 ‚±‚ñ‚È‚É‘½‚­‚ÌŒë‚è‚ð”Æ‚³‚È‚¢‚Ì‚Å‚·‚ªB

=head2 ŽÀ—pPerlƒvƒƒOƒ‰ƒ~ƒ“ƒO ‘æ2”Å‚æ‚è

 ‚Æ‚Í‚¢‚¦Perl‚ÅUnicodeƒf[ƒ^‚ðˆ—‚·‚éÛ‚ÉŠo‚¦‚Ä‚¨‚©‚È‚¯‚ê‚΂Ȃç‚È‚¢Å‚àd—v‚È
 ‚±‚Ƃ́AUnicodeƒf[ƒ^‚ðŽg—p‚µ‚È‚¢ê‡(‚ǂ̃tƒ@ƒCƒ‹‚àUTF-8‚Æ‚µ‚ă}[ƒN‚³‚ê‚Ä
 ‚¨‚炸A‚©‚ÂUTF-8ƒƒP[ƒ‹‚ðŽg—p‚µ‚Ä‚¢‚È‚¢ê‡)AK‚¢Perl5.005_3ƒ‰ƒ“ƒh‚É‚¢
 ‚é‚Ó‚è‚ð‚Å‚«‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·BUnicode‹@”\‚𖾎¦“I‚ÉŽg—p‚µ‚Ä‚¢‚È‚¢ŒÀ‚èA
 Unicode‹@”\‚ª‚ ‚È‚½‚̃R[ƒh‚ð–W‚°‚邱‚Æ‚Í‚ ‚è‚Ü‚¹‚ñBUnicode‚ðŽæ‚è“ü‚ê‚È‚ª‚ç
 ‹ŒŽ®‚̃oƒCƒg‘ΉžƒXƒNƒŠƒvƒg‚ð–WŠQ‚µ‚È‚¢‚Æ‚¢‚¤‚±‚Ì2‚‚̖ڕW‚ª‘˦ˆÄ‚ƍ¬—‚ð‚à‚½
 ‚ç‚·‚±‚Æ‚à‚ ‚è‚Ü‚·‚ªA³‚µ‚¢‚±‚Æ‚ð–Ù‚Á‚čs‚¤A‚»‚ꂪPerl‚Ì•ûŽ®‚Å‚ ‚èAPerl‚Ì•û
 j‚Å‚à‚ ‚è‚Ü‚·B

=head1 Sjisƒ\ƒtƒgƒEƒFƒA’a¶‚Ì‚Í‚È‚µ

 Perl3 ˆÈ~‚Ì Perl ‚̓oƒCƒiƒŠƒf[ƒ^‚ðˆ—‚·‚éƒXƒNƒŠƒvƒg‚ð‹Lq‚Å‚«‚Ü‚·B
 ‚»‚ê‚ÍŠÈ’P‚ÉŒ¾‚¦‚΁A‚Ç‚ñ‚ȃf[ƒ^‚Å‚àˆ—‚Å‚«‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·B
 
 ƒf[ƒ^‚Æ‚¢‚¤‚Æ“ú–{‘“à‚ł́A‚à‚Æ‚à‚Æ1981”N‚ÉCP/M-86‚Ì“à•”ˆ——p‚Æ‚µ‚člˆÄ
 ‚³‚ꂽƒVƒtƒgJIS•„†‰»•ûŽ®‚ªAî•ñŒðŠ·—pA‚³‚ç‚ɂ͏î•ñ’~Ï—p‚Æ‚µ‚čL‚­Žg‚í
 ‚ê‚Ä‚¢‚Ü‚·B‚¾‚©‚çA‚»‚̃f[ƒ^‚ðˆ—‚·‚éƒXƒNƒŠƒvƒg‚ðƒVƒtƒgJIS‚ō쐬‚·‚é‚Ì
 ‚Í‚²‚­Ž©‘R‚È‘I‘ð‚Å‚·B
 
 ‚Å‚àAŽc”O‚È‚±‚Æ‚É perl ƒCƒ“ƒ^ƒvƒŠƒ^‚̓VƒtƒgJIS‚ÌPerlƒXƒNƒŠƒvƒg‚ð‚»‚Ì‚Ü‚Ü
 ‚Å‚ÍŽÀs‚·‚邱‚Æ‚ª‚Å‚«‚È‚¢‚Ì‚Å‚·B
 
 ‚µ‚©‚µ‚È‚ª‚ç(‚ ‚È‚½‚̏‘‚¢‚½) Perl ƒXƒNƒŠƒvƒg‚̓f[ƒ^‚Å‚ ‚邱‚Ƃ͊ԈႢ‚È‚¢
 ‚̂ŁA(•Ê‚É—pˆÓ‚µ‚½) Perl ƒXƒNƒŠƒvƒg‚Å‚»‚ê‚ðˆ—‚µAperl ƒCƒ“ƒ^ƒvƒŠƒ^‚ÅŽÀs
 ‚Å‚«‚éƒXƒNƒŠƒvƒg‚É•ÏŠ·‚·‚邱‚Æ‚È‚çA‚Å‚«‚é‚Ì‚Å‚Í‚È‚¢‚Å‚µ‚傤‚©H
 
 Œ¾ŒêAƒCƒ“ƒ^ƒvƒŠƒ^AƒXƒNƒŠƒvƒgA‚»‚ꂼ‚ê‚̃eƒLƒXƒgAƒoƒCƒiƒŠ‚̈µ‚¢‚̉”ۂð
 ‚à‚¤ˆê“x‚Ü‚Æ‚ß‚Ä‚Ý‚Ü‚µ‚傤B‚±‚±‚ł̓VƒtƒgJIS‚ðƒoƒCƒiƒŠ‚É•ª—Þ‚µ‚Ä‚¢‚Ü‚·B
 
 ---------------------------------------------------
                   ‘ÎÛ        ƒeƒLƒXƒg  ƒoƒCƒiƒŠ
 ---------------------------------------------------
 PerlŒ¾Œê          ƒXƒNƒŠƒvƒg  ‰Â        ‰Â
 perlƒCƒ“ƒ^ƒvƒŠƒ^  ƒXƒNƒŠƒvƒg  ‰Â        •s‰Â
 PerlƒXƒNƒŠƒvƒg    ƒf[ƒ^      ‰Â        ‰Â
 ---------------------------------------------------
 
 perl ƒCƒ“ƒ^ƒvƒŠƒ^‚̓VƒtƒgJIS‚Å‹Lq‚³‚ꂽƒXƒNƒŠƒvƒg‚ðŽÀs‚Å‚«‚È‚¢‚¯‚ê‚ǁA
 Perl Œ¾Œê‚É‚Í–{—ˆA‚»‚̂悤‚Ȑ§ŒÀ‚ª‚ ‚é‚킯‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
 
 —v“_‚Í‚S‚‚ ‚è‚Ü‚·B
 
 ‚PDƒXƒNƒŠƒvƒg‚Ì•„†‰»•ûŽ®
 
 ‚ЂƂ‚̃XƒNƒŠƒvƒg’†‚É‚Q‚ˆȏã‚Ì•„†‰»•ûŽ®‚ŃŠƒeƒ‰ƒ‹•¶Žš—ñ‚ð‹Lq‚·‚éê‡A
 ŽÀÛ‚ÉŽg‚¤•„†‰»•ûŽ®‚Í‚P‚‚݂̂ƂµAŽc‚è‚Í16iƒGƒXƒP[ƒv‚ðŽg‚Á‚Ä‹Lq‚·‚é
 ‚Æ‚æ‚¢‚Å‚µ‚傤B
 ’·Šú“I‚ȉ^—pE•ÛŽç‚ðl‚¦‚½ê‡A•¡”‚Ì•„†‰»•ûŽ®‚ª¬Ý‚µ‚½ƒXƒNƒŠƒvƒg‚ð•Ò
 W‚Å‚«‚éŠÂ‹«‚ð‘O’ñ‚É‚Í‚Å‚«‚Ü‚¹‚ñB
 
 ‚QD“üo—̓f[ƒ^‚Ì•„†‰»•ûŽ®
 
 ƒŒƒR[ƒh‚²‚ƂɁAƒtƒB[ƒ‹ƒh‚²‚Æ‚É•„†‰»•ûŽ®‚ªˆÙ‚È‚é‚à‚Ì‚ª¬Ý‚·‚éA‚³‚ç‚É
 ‚Í‚»‚ê‚ç‚Ì•„†‰»•ûŽ®‚ªí‚É–¾Šm‚Æ‚ÍŒÀ‚炸Aƒf[ƒ^‚»‚Ì‚à‚Ì‚©‚琄‘ª‚µ‚È‚¯‚ê
 ‚΂Ȃç‚È‚¢A‚Æ‚¢‚¤‚̂̓[ƒ‹ƒhEƒƒCƒhEƒEƒFƒbƒu‚Ì•ª–ì‚ÉŒÀ‚ç‚ê‚Ä‚¢‚Ü‚·B
 ‚¢‚‚̍ ‚©‚ç‚©Perl‚Í‚±‚̏ꍇ‚ð "ˆê”Ê" ‚Æ‚µ‚Ĉµ‚Á‚Ä‚µ‚Ü‚Á‚Ä‚¢‚é‚̂ŁAŒ»ŽÀ
 ¢ŠE‚ňê”Ê“I‚ȁu‚½‚¾’P‚É•¶Žš—ñ‚ðo—Í‚µ‚½‚¢v‚Æ‚¢‚¤‚悤‚È‚±‚Æ‚ª“‚­‚È‚è
 ‚Ü‚µ‚½B
 ˆê”Ê“I‚È‚à‚Ì‚ðˆê”Ê“I‚Ɉµ‚¢A—áŠO‚ð—áŠO‚Æ‚µ‚Ĉµ‚¤‚Æ‚¢‚¤ Perl –{—ˆ‚ÌŒ`‚É–ß
 ‚¹‚΁A"Easy jobs easy" ‚ðŽæ‚è–ß‚¹‚é‚Í‚¸‚Å‚·B
 
 ‚RD•Ï”‚̃f[ƒ^Œ^
 
 Perl‚̕ϐ”‚́Aƒf[ƒ^Œ^‚ðéŒ¾‚µ‚čì‚蕪‚¯‚½‚è‚Í‚µ‚Ü‚¹‚ñBƒf[ƒ^Œ^‚ðˆÓŽ¯‚µ
 ‚½‚¢ê–ʂł́A‰‰ŽZŽq‚ðŽg‚¢•ª‚¯‚Ü‚·B
 ‚»‚̍ì–@‚ɍ‡‚킹‚é‚È‚ç‚΁AƒoƒCƒg—ñ‚Æ•¶Žš—ñ‚͍ì‚蕪‚¯‚é‚Ì‚Å‚Í‚È‚­AŠÖ”‚Ì
 Žg‚¢•ª‚¯‚ð‚·‚é‚Ù‚¤‚ª“ˆêŠ´‚ª‚ ‚è‚Ü‚·B
 
 ‚SDencode/decode ‚Æ convert ‚̈Ⴂ
 
 encode/decode ‚ÍŒ¾Œêˆ—Œn‚Ì“s‡‚ɍ‡‚킹‚āAƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ}‚ª
 ‹Lq‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñBƒvƒƒOƒ‰ƒ}‚̓c[ƒ‹‚ðŽg‚¤—§ê‚©‚çƒc[ƒ‹‚ÉŽg‚í‚ê
 ‚é—§ê‚É‚È‚Á‚Ä‚µ‚Ü‚¢‚Ü‚·B‚Æ‚­‚ɁuŠO•”‚ɏo—Í‚Å‚«‚È‚¢ó‘Ô‚ª³‚µ‚¢ó‘ԁv‚Æ
 ‚¢‚¤‚̂̓fƒoƒbƒO‚ð“‚­‚µ‚Ü‚·Bƒ\[ƒXƒvƒƒOƒ‰ƒ€’†‚̃Šƒeƒ‰ƒ‹‚ðƒfƒR[ƒhE
 ƒGƒ“ƒR[ƒh‚·‚é‚̂́AŒ¾Œêˆ—Œn‚ªs‚¤‚Ì‚ª‚±‚ê‚܂ł̏K‚킵‚Å‚Í‚È‚¢‚Å‚µ‚å
 ‚¤‚©H
 ˆê•û‚ŁAjcode.pl ‚Ì convert ‚̓vƒƒOƒ‰ƒ}‚ª•K—v‚ɉž‚¶‚Ä‹Lq‚·‚é‚à‚Ì‚Å‚·B
 convert Œã‚̃f[ƒ^‚ª“Ç‚ß‚é‚Ì‚Å‚ ‚ê‚΁A‚»‚ê‚́u³‚µ‚¢vƒvƒƒOƒ‰ƒ€‚Å‚·B
 
 ‚±‚̃\ƒtƒgƒEƒFƒA‚Í‚»‚̂悤‚ȃAƒCƒfƒBƒAA‘O’ñðŒA–Ú•W‚É‚æ‚Á‚čì‚èŽn‚ß‚ç
 ‚ê‚Ü‚µ‚½B

=head1 ŽQl•¶Œ£AƒŠƒ“ƒN

 PerlƒvƒƒOƒ‰ƒ~ƒ“ƒO
 Larry Wall, Randal L.Schwartz, ‹ß“¡ ‰Ãá –ó
 1993”N2ŒŽ ”­s
 ISBN 4-89052-384-7
 http://www.context.co.jp/~cond/books/old-books.html

 ƒvƒƒOƒ‰ƒ~ƒ“ƒOPerl ‰ü’ù”Å
 By Larry Wall, Tom Christiansen, Randal L. Schwartz, ‹ß“¡ ‰Ãá –ó
 1997”N12ŒŽ ”­s
 759ƒy[ƒW
 ISBN 4-900900-48-6
 http://www.oreilly.co.jp/out/pperl/index.htm

 ƒvƒƒOƒ‰ƒ~ƒ“ƒOPerl ‘æ3”Å VOLUME 1
 By Larry Wall, Tom Christiansen, Jon Orwant, ‹ß“¡ ‰Ãá –ó
 2002”N09ŒŽ ”­s
 756ƒy[ƒW
 ISBN 4-87311-096-3
 http://www.oreilly.co.jp/books/4873110963/

 ƒvƒƒOƒ‰ƒ~ƒ“ƒOPerl ‘æ3”Å VOLUME 2
 By Larry Wall, Tom Christiansen, Jon Orwant, ‹ß“¡ ‰Ãá –ó
 2002”N09ŒŽ ”­s
 680ƒy[ƒW
 ISBN 4-87311-097-1
 http://www.oreilly.co.jp/books/4873110971/

 The Perl Language Reference Manual (for Perl version 5.12.1)
 by Larry Wall and others
 Paperback (6"x9"), 724 pages
 Retail Price: $39.95 (pound 29.95 in UK)
 ISBN 13: 978-1-906966-02-7
 http://www.network-theory.co.uk/perl/language/

 Perl Pocket Reference, 5th Edition
 By Johan Vromans
 Publisher: O'Reilly Media
 Released: July 2011
 Pages: 102
 http://shop.oreilly.com/product/0636920018476.do

 Programming Perl, 4th Edition
 By: Tom Christiansen, brian d foy, Larry Wall, Jon Orwant
 Publisher: O'Reilly Media
 Formats: Print, Ebook, Safari Books Online
 Released: March 2012
 Pages: 1130
 Print ISBN: 978-0-596-00492-7 | ISBN 10: 0-596-00492-3
 Ebook ISBN: 978-1-4493-9890-3 | ISBN 10: 1-4493-9890-1
 http://shop.oreilly.com/product/9780596004927.do

 PerlƒNƒbƒNƒuƒbƒN ‘æ2”Å VOLUME 1
 By Tom Christiansen, Nathan Torkington, Shibuya Perl Mongers ŠÄ–ó, Š”Ž®‰ïŽÐƒhƒLƒ…ƒƒ“ƒgƒVƒXƒeƒ€ –ó
 2004”N09ŒŽ ”­s
 752ƒy[ƒW
 ISBN 4-87311-202-8
 http://www.oreilly.co.jp/books/4873112028/

 PerlƒNƒbƒNƒuƒbƒN ‘æ2”Å VOLUME 2
 By Tom Christiansen, Nathan Torkington, Shibuya Perl Mongers ŠÄ–ó, Š”Ž®‰ïŽÐƒhƒLƒ…ƒƒ“ƒgƒVƒXƒeƒ€ –ó
 2004”N09ŒŽ ”­s
 464ƒy[ƒW
 ISBN 4-87311-203-6
 http://www.oreilly.co.jp/books/4873112036/

 PerlƒNƒCƒbƒNƒŠƒtƒ@ƒŒƒ“ƒX
 By Stephen Spainhour, Ellen Siever, Nathan Patwardhan, ‹ß“¡ ‰Ãá, ‘äê Œ\ˆê ŠÄ–ó
 2000”N03ŒŽ ”­s
 784ƒy[ƒW
 ISBN 4-900900-72-9
 http://www.oreilly.co.jp/books/4900900729/

 ‰‚ß‚Ä‚ÌPerl Win32ƒVƒXƒeƒ€
 Randal L. Schwartz, Erik Olson, Tom Christiansen ’˜, —L”n ŽO˜Y ŠÄ–ó, ÎŒ´ ’q_ –ó
 1998”N11ŒŽ ”­s
 348ƒy[ƒW
 ISBN 4-900900-79-6
 http://www.oreilly.co.jp/books/4900900796/

 ‰‚ß‚Ä‚ÌPerl ‘æ5”Å
 Randal L. Schwartz, Tom Phoenix, brian d foy ’˜
 2009”N10ŒŽ24“ú ”­”„
 424ƒy[ƒW
 ISBN 978-4-87311-427-9
 http://www.oreilly.co.jp/books/9784873114279/

 ‰‚ß‚Ä‚ÌPerl ‘æ6”Å
 Randal L. Schwartz, brian d foy, Tom Phoenix ’˜, ‹ß“¡ ‰Ãá –ó
 2012”N07ŒŽ ”­s
 488ƒy[ƒW
 ISBN 978-4-87311-567-2
 http://www.oreilly.co.jp/books/9784873115672/

 ŽÀ—p PerlƒvƒƒOƒ‰ƒ~ƒ“ƒO ‘æ2”Å
 Simon Cozens ’˜, ›–ì —Ç“ñ –ó
 2006”N03ŒŽ ”­s
 320ƒy[ƒW
 ISBN 4-87311-280-X
 http://www.oreilly.co.jp/books/487311280X/

 PerlƒŠƒ\[ƒXƒLƒbƒg - UNIX”Å
 Futato, Irving, Jepson, Patwardhan, Siever ‹¤’˜, ƒCƒGƒ[ƒŒ[ƒxƒ‹ ŽR–{ _ –ó
 ISBN 4-900900-65-6
 http://www.oreilly.co.jp/out/presuni/

 Perl‚̍‘‚ւ悤‚±‚»
 ‘O“cŒO, ¬ŽR—TŽi, Ä“¡–õ, •zŽ{—Ll ‹¤’˜
 1993”N4ŒŽ1“ú ”­s
 280ƒy[ƒW
 ISBN 4-7819-0697-4
 http://www.saiensu.co.jp/?page=book_details&ISBN=ISBN4-7819-0697-4
 
 VPerl‚̍‘‚ւ悤‚±‚» Perl5‘Ήž”Å
 Ä“¡–õ, ¬ŽR—TŽi, ‘O“cŒO, •zŽ{—Ll ‹¤’˜
 1996”N4ŒŽ1“ú ”­s
 368ƒy[ƒW
 ISBN 4-7819-0795-4
 http://www.saiensu.co.jp/?page=book_details&ISBN=ISBN4-7819-0795-4
 
 ‚܂邲‚ÆPerl! Vol.1
 ¬Ž”’e, ‹{ì’B•F, ˆÉ“¡’¼–ç, ì‡F“T, …–ì‹M–¾, ‰Á“¡ “Ö, ÎŠ_Œ›ˆê, ŒIŒ´—RŽ÷, ‚Ü‚©‚Ü‚©, ’r糒q—m, ma.la, ’|”——Ç”Í, ‚³‚³‚¾‚±‚¤‚¢‚¿, ‰Â’m–L, HŽR—²“¹, ‹v•ÛŒ³Ž¡, ‘êàV—²Žj, ‰Ì‘ã˜a³ ’˜
 2006”N08ŒŽ25“ú ”­”„
 232ƒy[ƒW
 ISBN 978-4-8443-2289-4
 http://www.impressjapan.jp/books/2289

 ƒ‚ƒ_ƒ“Perl“ü–å
 –q‘å•ã’˜
 2009”N02ŒŽ09“ú
 344ƒy[ƒW
 ISBN 10: 4798119172 | ISBN 13: 978-4798119175
 http://www.seshop.com/product/detail/10250/

 WEB+DB PRESS Vol.70
 2012”N08ŒŽ24“ú ”­”„
 200ƒy[ƒW
 ISBN 978-4-7741-5190-8
 http://gihyo.jp/magazine/wdpress

 “ú–{Œêî•ñˆ—
 Understanding Japanese Information Processing
 By Ken Lunde, t•Õ ˜Ò, —é–Ø •¶ –ó
 1995”N8ŒŽ ”­s
 496ƒy[ƒW
 ISBN 4-89052-708-7
 http://www.fukkan.com/vote.php3?no=4293

 CJKV“ú’†ŠØ‰zî•ñˆ—
 Chinese, Japanese, Korean & Vietnamese Computing
 By Ken Lunde, ¬¼ Í, ‹tˆä ŽŒÈ –ó
 2002”N12ŒŽ ”­s
 1172ƒy[ƒW
 ISBN 4-87311-108-0
 http://www.oreilly.co.jp/books/4873111080/

 Úà ³‹K•\Œ» ‘æ2”Å
 By Jeffrey E. F. Friedl, “c˜a Ÿ –ó
 2003”N05ŒŽ ”­s
 464ƒy[ƒW
 ISBN 4-87311-130-7
 http://www.oreilly.co.jp/books/4873111307/

 Úà ³‹K•\Œ» ‘æ3”Å
 By Jeffrey E. F. Friedl, Š”Ž®‰ïŽÐƒƒ“ƒOƒe[ƒ‹^’·”ö ‚O –ó
 2008”N04ŒŽ ”­s
 528ƒy[ƒW
 ISBN 978-4-87311-359-3
 http://www.oreilly.co.jp/books/9784873113593/

 ³‹K•\Œ»ƒNƒbƒNƒuƒbƒN
 Jan Goyvaerts, Steven Levithan ’˜, ’·”ö ‚O –ó
 2010”N04ŒŽ ”­s
 552ƒy[ƒW
 ISBN 978-4-87311-450-7
 http://www.oreilly.co.jp/books/9784873114507/

 JISŠ¿ŽšŽš“T
 ŽÅ–ì kŽi •Ò’˜
 1456 •Å
 ISBN 4-542-20129-5
 http://www.webstore.jsa.or.jp/lib/lib.asp?fn=/manual/mnl01_12.htm

 ƒCƒ“ƒ^[ƒlƒbƒgŽž‘ã‚Ì•¶ŽšƒR[ƒh
 ¬—Ñ —´¶, ˆÀ‰ª Fˆê, ŒË‘º “N, ŽOã Šì‹M •Ò
 285 €
 ISBN 4-320-12038-8
 http://www.kyoritsu-pub.co.jp/bookdetail/9784320120389

 •¶Žš•„†‚Ì—ðŽj\‰¢•Ä‚Æ“ú–{•Ò\
 ˆÀ‰ª Fˆê, ˆÀ‰ª ‘fŽq ’˜
 2006”N2ŒŽ10“ú ”­s
 288ƒy[ƒW
 ISBN 4-320-12102-7
 http://www.kyoritsu-pub.co.jp/bookdetail/9784320121027

 •¶Žš•„†‚Ì—ðŽj ƒAƒWƒA•Ò
 ŽOã Šì‹M ’˜
 2002”N3ŒŽ20“ú ”­s
 377ƒy[ƒW
 ISBN 4-320-12040-X
 http://www.amazon.co.jp/gp/product/432012040X

 Unicode•W€“ü–å
 ƒgƒj[EƒOƒ‰ƒnƒ€ ’˜, Š£ ˜aŽu, ŠC˜V’Ë “O –ó, ŠÖŒû ³—T ŠÄC
 2001”N5ŒŽ29“ú ”­s
 455ƒy[ƒW
 ISBN 4-7981-0030-7
 http://www.seshop.com/product/detail/2276/

 Unicode‚É‚æ‚éJIS X 0213ŽÀ‘•“ü–å
 “cŠÛ Œ’ŽO˜Y ’˜
 2008”N8ŒŽ25“ú ”­s
 200ƒy[ƒW
 ISBN 978-4-89100-608-2
 http://ec.nikkeibp.co.jp/item/books/A04500.html

 Unicode IVS/IVD“ü–å
 “cŠÛ Œ’ŽO˜Y, ¬—Ñ —´¶ ’˜
 2013”N03ŒŽ04“ú ”­s
 336ƒy[ƒW
 ISBN 978-4-82229-483-0
 http://store.nikkeibp.co.jp/item/books/P94830.html

 ŠˆŽš‚ƃAƒ‹ƒtƒ@ƒxƒbƒg ‹Zp‚©‚猩‚½“ú–{Œê•\‹L‚ÌŽp
 ‰Æ•ÓŸ•¶ ’˜
 376ƒy[ƒW
 ISBN978-4-588-79601-1
 http://www.h-up.com/bd/isbn978-4-588-79601-2.html

 UNIX MAGAZINE
 1993”N8ŒŽ†
 172ƒy[ƒW
 T1008901080816 ŽGŽ08901-8
 http://ascii.asciimw.jp/books/books/detail/978-4-7561-5008-0.shtml

 LINUX“ú–{ŒêŠÂ‹«
 ŽRŒ`_¶, Stephen J. Turnbull, Craig ¬“c, Robert J. Bickel ’˜
 2000”N06ŒŽ ”­s
 376ƒy[ƒW
 ISBN 4-87311-016-5
 http://www.oreilly.co.jp/books/4873110165/

 MacPerl“ü–å
 Vicki Brown, Chris Nandor ’˜, (Š”)ƒRƒXƒ‚Eƒvƒ‰ƒlƒbƒg –ó
 1999”N03ŒŽ ”­s
 399ƒy[ƒW
 ISBN 4-7561-3068-2

 Macintoshƒf[ƒ^Šˆ—pp
 Î“c –L ’˜
 1995”N2ŒŽ ”­s
 230ƒy[ƒW
 ISBN 4-89563-408-6

 MPWƒvƒƒOƒ‰ƒ~ƒ“ƒOuÀ
 Handmade Intelligence ’˜
 1992”N8ŒŽ ”­s
 346ƒy[ƒW
 ISBN 4-7561-0963-2

 ƒZƒLƒ…ƒAWebƒvƒƒOƒ‰ƒ~ƒ“ƒOTipsW
 ²–¼–Ø ’q‹M ’˜
 2008”N3ŒŽ ”­s
 421ƒy[ƒW
 ISBN 10: 4883732568
 ISBN 13: 978-4883732562

 Windows NTƒVƒFƒ‹ƒXƒNƒŠƒvƒg
 Tim Hill ’˜, Œõ“cG –ó
 1998”N10ŒŽ6“ú ”­s
 448ƒy[ƒW
 ISBN 4-7973-0658-0
 http://books-support.sbcr.jp/isbn/macmillan/ntwrkshp/index.htm

 ƒ}ƒCƒNƒƒ\ƒtƒgŒöŽ®‰ðà‘ Microsoft Windows ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“Šˆ—pƒKƒCƒh
 2004”N12ŒŽ27“ú ”­s
 500ƒy[ƒW
 ISBN 4-89100-438-X
 http://ec.nikkeibp.co.jp/item/books/587500.html

 ‘O“c ŒO‚³‚ñ, Perl‚Ì—ðŽj Perl 1,2,3,4
 http://www.slideshare.net/KaoruMaeda/perl-perl-1234

 ¬£‚³‚ñ, u•¶Žš—ñv‚ɂ‚¢‚Ä
 http://d.hatena.ne.jp/nurse/20141107#1415355181

 ¼”ö ‘טa‚³‚ñ, u•¶Žš—ñ‚𕶎š‚Ì—ñ‚Æ‚Ý‚È‚·’Pƒ‰»v‚Á‚Ä‚Ç‚¤‚¢‚¤‚±‚ƁH‰ðà•Ò
 http://d.hatena.ne.jp/nishiohirokazu/20141107/1415286729

 ¬£‚³‚ñ, “ú–{ŒêEUC‚Ì—ðŽj 22:00
 http://d.hatena.ne.jp/nurse/20090308/1236517235

 Mike Whitaker‚³‚ñ, Perl And Unicode
 http://www.slideshare.net/Penfold/perl-and-unicode

 Ricardo Signes‚³‚ñ, Perl 5.14 for Pragmatists
 http://www.slideshare.net/rjbs/perl-514-8809465

 Ricardo Signes‚³‚ñ, What's New in Perl? v5.10 - v5.16
 http://www.slideshare.net/rjbs/whats-new-in-perl-v510-v516

 ’·’Jì —E‚³‚ñ, ‘Û‰»³‹K•\Œ»ƒ‰ƒCƒuƒ‰ƒŠ‚È‚Ç
 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

 ‘O“c ‘א¬‚³‚ñ, ƒ}ƒ‹ƒ`ƒoƒCƒg•¶ŽšƒZƒbƒg—p³‹K•\Œ»ƒRƒ“ƒpƒCƒ‰\¬•û–@‹y‚уvƒƒOƒ‰ƒ€ 
 http://patent.astamuse.com/ja/published/JP/No/2007102744

 YAMAGAKI Norio, ƒ}ƒ‹ƒ`ƒoƒCƒgˆ—Œü‚¯•¶Žš—ñÆ‡—p—LŒÀƒI[ƒgƒ}ƒgƒ“¶¬ƒVƒXƒeƒ€
 http://www.wipo.int/pctdb/ja/wo.jsp?WO=2009116646&IA=JP2009055515

 Tokyo-pm •Û‘¶‘ŒÉ
 http://mail.pm.org/pipermail/tokyo-pm/
 http://mail.pm.org/pipermail/tokyo-pm/1999-September/001844.html
 http://mail.pm.org/pipermail/tokyo-pm/1999-September/001854.html

 ruby-list
 http://blade.nagaokaut.ac.jp/ruby/ruby-list/index.shtml
 http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/2440
 http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/2446
 http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/2569
 http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/9427
 http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/9431
 http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/10500
 http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/10501
 http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/10502
 http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/12385
 http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/12392
 http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/12393
 http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/19156

 Object-oriented with Perl
 http://www.freeml.com/perl-oo/486
 http://www.freeml.com/perl-oo/487
 http://www.freeml.com/perl-oo/490
 http://www.freeml.com/perl-oo/491
 http://www.freeml.com/perl-oo/492
 http://www.freeml.com/perl-oo/494
 http://www.freeml.com/perl-oo/514

 CPAN Directory INABA Hitoshi
 http://search.cpan.org/~ina/

 BackPAN
 http://backpan.perl.org/authors/id/I/IN/INA/

 Recent Perl packages by "INABA Hitoshi"
 http://code.activestate.com/ppm/author:INABA-Hitoshi/

=head1 ŽÓŽ«

Žc”O‚È‚ª‚çAŠ´ŽÓ‚·‚é‚·‚ׂĂ̐l‚ð‚±‚±‚ɏ‘‚­‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB‚»‚¤‚¾‚©‚ç‚Æ‚¢‚Á‚āA‚»‚ê
‚𗝗R‚É‚µ‚Ĉȉº‚Ì•ûX‚Ö‚ÌŠ´ŽÓ‚͏ȗª‚·‚é‚킯‚É‚Í‚¢‚©‚È‚¢‚Å‚µ‚傤B

 ŽR‰º —Ç‘ ‚³‚ñ, ƒVƒtƒgJIS‚̃fƒUƒCƒ“‚̘b
 ttp://furukawablog.spaces.live.com/Blog/cns!1pmWgsL289nm7Shn7cS0jHzA!2225.entry (ƒŠƒ“ƒNØ‚ê)
 ttp://shino.tumblr.com/post/116166805/1981-us-jis
 (æ“ª‚É 'h' ‚ð•t‰Á‚µ‚ăAƒNƒZƒX‚µ‚Ä‚­‚¾‚³‚¢)
 http://www.wdic.org/w/WDIC/%E3%82%B7%E3%83%95%E3%83%88JIS
 
 “ú–{Œêî•ñˆ—‚ðs‚¤ÛA‚¢‚Ü‚à‚Á‚ăVƒtƒgJIS‚Ù‚ÇŽÀ—p“I‚È•„†‰»•ûŽ®‚Í‚ ‚è‚Ü‚¹‚ñB
 ‚»‚Ì——R‚Í3‚‚ ‚é‚ÆŽv‚¢‚Ü‚·B
 
 1. Šù‘¶‚Ì”¼ŠpƒJƒ^ƒJƒi‚̃f[ƒ^‚Æ‚»‚Ì‚Ü‚Ü‹¤‘¶‚Å‚«‚éB‰ß‹Ž‚ÌŽ‘ŽY‚ðŒ»Ý‚ÉŒp³‚Å‚«‚é‚Æ
   ‚¢‚¤‚±‚Ƃ́AŒ»Ý‚ÌŽ‘ŽY‚ð–¢—ˆ‚ÖŒp³‚Å‚«‚邱‚Æ‚ðŽ¦´‚µ‚Ä‚¢‚Ü‚·B
 2. codepoint ‚Æ grapheme ‚Ì’PˆÊ‚ªˆê’v‚·‚éB‚±‚Ì‚¨‚©‚°‚ŃVƒXƒeƒ€‚ðì‚é‚ЂƂƎg‚¤‚ЂÆ
   ‚ÌŠÔ‚Åê’ê—‚ª”­¶‚µ‚Ü‚¹‚ñB
 3. ƒƒ‚ƒŠã‚̐è—L•‚Æ•\Ž¦EˆóŽšã‚̐è—L•‚ªˆê’v‚·‚éB‚±‚̍H•v‚ª‰æ–ʐ݌vA’ •[ÝŒvA
   ‚»‚ê‚ɃJ[ƒ\ƒ‹‚̈ړ®ˆ—‚ɖ𗧂¿‚Ü‚·B
 
 1981”N‚ÌŽž“_‚ŁA‚±‚±‚܂ōl‚¦‚Ä‚¢‚½ŽR‰º‚³‚ñ‚̓nƒbƒJ[‚ƌĂԂɂӂ³‚킵‚¢‚Å‚µ‚傤B

 Larry Wall ‚³‚ñ, Perl
 http://www.perl.org/
 
 Perl ‚ª³‹K•\Œ»‚É‚æ‚Á‚ăoƒCƒiƒŠƒf[ƒ^‚ðˆµ‚¦‚邱‚ƂŁA‚±‚̃\ƒtƒgƒEƒFƒA‚ª¬—§‚µ‚Ä‚¢
 ‚Ü‚·Bƒo[ƒWƒ‡ƒ“ŠÔ‚̌݊·«‚̍‚‚³‚É‚à•‚¯‚ç‚ê‚Ü‚µ‚½B³‹K•\Œ»‚̃ƒ^•¶Žš‚âŠeŽíƒNƒH[
 ƒg‚̃fƒŠƒ~ƒ^‚́A‰ðŒˆ‚·‚ׂ«‘Ώۂł ‚éˆê•û‚ŁA‰ðŒˆ‚·‚éÛ‚ÌŽè’i‚Æ‚µ‚Ä‚à–𗧂¿‚Ü‚·B
 ‚à‚µ Perl ‚ª‚È‚¯‚ê‚΁A–â‘è‚à‘¶Ý‚¹‚¸A‚Ü‚½‚»‚ê‚ð‰ðŒˆ‚·‚éŠì‚Ñ‚à‚È‚¢‘Þ‹ü‚Ȑl¶‚ð‘—
 ‚é‚Æ‚±‚ë‚Å‚µ‚½B
 
 ‚¾‚©‚ç Larry Wall ‚³‚ñ‚É‚Í‚Æ‚Á‚Ä‚àŠ´ŽÓ‚µ‚Ä‚¢‚Ü‚·I

 ‰Ì‘ã ˜a³‚³‚ñ, jcode.pl
 ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/
 http://log.utashiro.com/pub/2006/07/jkondo_a580.html
 
 Å‰‚É Perl ‚ɏo‰ï‚Á‚½‚͉̂̑コ‚ñ‚̏‘‚©‚ꂽ UNIX MAGAZINE ‚Ì‹LŽ–‚Å‚µ‚½Bƒtƒ@ƒCƒ‹
 ƒeƒXƒg‰‰ŽZŽq -TA-B ‚Ì‹@”\‚ðŽÀŒ»‚·‚éƒR[ƒh‚Í‹LŽ–‚ɏ‘‚©‚ꂽ‚à‚Ì‚ð‚Ù‚Ú‚»‚Ì‚Ü‚ÜŽg‚Á‚Ä
 ‚¢‚Ü‚·B‚Ü‚½“ú–{Œêî•ñˆ—‚ðŽ·•M‚³‚ꂽ‚ ‚Ì Ken Lunde ‚³‚ñ‚̐搶‚Å‚à‚ ‚邵AJeffrey
 E. F. Friedl ‚³‚ñ‚ÌÚà³‹K•\Œ»‚ÌŠÄ–ó‚à‚³‚ê‚Ä‚¢‚āA‚±‚̃\ƒtƒgƒEƒFƒA‚ÌŽüˆÍ‚ɂ͏í‚É
 ‰Ì‘コ‚ñ‚ª“oê‚µ‚Ü‚·B
 
 Tokyo.pm ‚̃[ƒŠƒ“ƒOƒŠƒXƒg‚ł́AV‚µ‚¢‹@”\‚ðŽÀŒ»‚·‚邽‚߂ɐV‚½‚ÉŽÀ‘•‚ð‚·‚éê‡‚Å‚àA
 ‰ß‹Ž‚ɍì‚ç‚ꂽƒ\ƒtƒgƒEƒFƒA‚Æ“¯ˆê‚̃Cƒ“ƒ^ƒtƒF[ƒX‚É‚·‚é‚Æ‚¢‚¤A‚æ‚¢ƒAƒCƒfƒBƒA‚ð‹³‚í
 ‚è‚Ü‚µ‚½B
 
 æ‚Ù‚ÇŽüˆÍ‚ÆŒ¾‚¢‚Ü‚µ‚½‚ªAŽÀ‚Í‚»‚ê‚Í“–‘R‚Ì‚±‚ƂŁA‚±‚̃\ƒtƒgƒEƒFƒA‚Í jcode.pl ‚Ì
 ƒ\[ƒX‚ð‚à‚Æ‚É‚µ‚č쐬‚³‚ꂽ‚©‚ç‚Å‚·B‚¾‚©‚牽‚ð‚Ç‚¤l‚¦‚Ä‚à‰Ì‘コ‚ñ‚È‚µ‚ŁA‚±‚̃\
 ƒtƒgƒEƒFƒA‚ª¶‚Ü‚ê‚邱‚Æ‚Í‚È‚©‚Á‚½‚ÆŽv‚¤‚Ì‚Å‚·B

 Jeffrey E. F. Friedl ‚³‚ñ, Úà³‹K•\Œ»
 http://regex.info/
 
 Úà³‹K•\Œ»(‘æ2”Å)‚ð‚Í‚¶‚ß‚Ä“Ç‚ñ‚¾‚Æ‚«A‰½‚ª‘‚¢‚Ä‚ ‚é‚Ì‚©‘S‚­—‰ð‚Å‚«‚¸A‚Ä‚Á‚«‚è
 ‰pŒê”ł𔃂Á‚Ä‚µ‚Ü‚Á‚½‚Ì‚Å‚Í‚È‚¢‚©‚Æ‹^‚Á‚½‚Ù‚Ç‚Å‚µ‚½B‚µ‚©‚µ‚È‚ª‚ç P.340 Matching
 Nested Constructs with Embedded Code ‚ªŽ©•ª‚ª•K—v‚Æ‚µ‚Ä‚¢‚éƒR[ƒh‚¾‚Æ‹C‚¢‚½‚Æ‚«‚Í
 ‚Æ‚Ä‚àŠð‚µ‚©‚Á‚½‚Ì‚ðŠo‚¦‚Ä‚¢‚Ü‚·(‚æ‚­Œ©‚½‚ç‰pŒê”Å‚Å‚µ‚½)B
 
 ‚»‚ñ‚Ȃ킯‚ŃlƒXƒg‚µ‚½Š‡ŒÊ‚ðˆ—‚Å‚«‚é‚̂́A•¶Ž}(Fumie)‚³‚ñ‚Ì‚¨‚©‚°‚Å‚·B
 (Ž„‚ÌŠ´ŽÓ‚ª“`‚í‚è‚Ü‚·‚悤‚É...B)

 Ken Lunde ‚³‚ñ, “ú–{Œêî•ñˆ—ACJKV“ú’†ŠØ‰zî•ñˆ—
 http://www.fukkan.com/vote.php3?no=4293
 http://www.oreilly.co.jp/books/4873111080/
 
 u“ú–{Œêî•ñˆ—vuCJKV“ú’†ŠØ‰zî•ñˆ—v‚ð“Ç‚ñ‚Å•¶ŽšW‡‹KŠi‚Æ•„†‰»•ûŽ®‚ðŠw‚сA
 •¶Žš‰»‚¯‚ÌŒ´ˆö‚ɂ‚¢‚Ä—‰ð‚ª[‚Ü‚è‚Ü‚µ‚½B‚³‚ç‚É JPerl ‚Ìà–¾‚̉ӏŠ‚ɂāu‚æ‚è‚æ‚¢
 ‰Â”À«(optimal portability)v‚Æ‚¢‚¤Œ¾—t‚©‚çAƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒvƒƒOƒ‰ƒ€‚ƁAŒ¾Œê
 ˆ—Œn‚Ì‚Ó‚½‚‚̉”À«‚𓯎ž‚É‰ðŒˆ‚·‚ׂ«‚¾‚Æ‚¢‚¤‚±‚Æ‚É‹C‚©‚¹‚Ä‚à‚ç‚¢‚Ü‚µ‚½B
 
 Appendix W: Perl Code Examples ‚Ì’†‚Ì CJKV Encoding TemplatesAMultiple-Byte
 AnchoringAMultiple-Byte Processing ‚à‚Æ‚Ä‚àŽQl‚É‚È‚è‚Ü‚µ‚½B
 
 Ž„‚Ì‚³‚³‚â‚©‚ȃnƒbƒN‚Æ‚µ‚āA‚±‚±‚Å Jeffrey E. F. Friedl ‚³‚ñ‚ÉŠ´ŽÓ‚µ‚Ü‚·B

 ’åœA ’ms‚³‚ñ, Shift-JISƒeƒLƒXƒg‚𐳂µ‚­ˆµ‚¤
 http://homepage1.nifty.com/nomenclator/perl/shiftjis.htm
 
 uShift-JISƒeƒLƒXƒg‚𐳂µ‚­ˆµ‚¤v‚ŁAPerl‚ÅShiftJIS‚ðˆµ‚¤‚Æ‚«‚̃mƒEƒnƒE‚ð‹³‚¦‚Ä
 ’¸‚«A‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚·B‚±‚̃TƒCƒg‚Ì“à—e‚ð‚à‚ƂɁAƒXƒNƒŠƒvƒg’†‚̃Šƒeƒ‰ƒ‹•¶Žš—ñ
 ‚́uƒ\v‚ðuƒ\\v‚É•ÏŠ·‚·‚éƒtƒBƒ‹ƒ^ƒvƒƒOƒ‰ƒ€‚ðì‚é‚Æ‚±‚ë‚©‚çŽn‚߁A—áŠO‚ð­‚µ‚¸‚Â
 ‘‚«‰Á‚¦‚Ä‚¢‚­‚±‚Æ‚Å‚±‚̃\ƒtƒgƒEƒFƒA‚ªì‚ç‚ê‚Ä‚¢‚«‚Ü‚µ‚½B
 
 u’·‚¢•¶Žš—ñ‚ɑ΂·‚鐳‹K•\Œ»ŒŸõv‚ɂ‚¢‚Ä‚àŽÀ‘•‚ÉŠˆ‚©‚·‚±‚Æ‚ª‚Å‚«‚Ü‚µ‚½B
 ‚à‚µ‚±‚̃TƒCƒg‚ðŒ©‚È‚©‚Á‚½‚Ì‚È‚çASjisƒ\ƒtƒgƒEƒFƒA‚ðì‚ꂽ‚©‚Ç‚¤‚©’è‚©‚Å‚Í‚ ‚è‚Ü‚¹
 ‚ñB

 ‚܂‚à‚Æ ‚ä‚«‚Ђ낳‚ñ, Ruby on Perl(s)
 http://www.rubyist.net/~matz/slides/yapc2006/
 
 YAPC::Asia 2006 Tokyo "Ruby on Perl(s)" ‚ŁuCSI‚Í•s‰Â”\‚¶‚á‚È‚¢v‚±‚Ƃ𕪂©‚è‚â‚·
 ‚­‹³‚¦‚Ä‚à‚ç‚¢‚Ü‚µ‚½B¡“x Ruby ”Å‚ðì‚邱‚Æ‚É‚È‚Á‚½‚çA‚æ‚낵‚­‚¨Šè‚¢‚µ‚Ü‚·B

 “¡‰ª ˜a•v‚³‚ñ, jperlƒ†[ƒU[‚Ì‚½‚ß‚É
 http://homepage1.nifty.com/kazuf/jperl.html
 
 ver.0.71 ‚ðì¬‚·‚éÛAŽ„‚ª’¼Ú—˜—p‚Å‚«‚È‚¢ŠÂ‹«‚ł̃eƒXƒg‚Ì‚½‚ß‚É60‰ñ‚à‚̃[ƒ‹‚Ì
 ‚â‚èŽæ‚è‚ð‚µA’š”J‚ɃfƒoƒbƒO‚É•t‚«‡‚Á‚Ä’¸‚«‚Ü‚µ‚½B‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚µ‚½B

 Bruce. ‚³‚ñ, Unicode in Perl
 http://www.rakunet.org/tsnet/TSabc/18/546.html

 ˜aò G–¾‚³‚ñ, Windows‚ÅPerl 5.8/5.10‚ðŽg‚¤ƒ‚ƒ“‚¶‚á‚È‚¢
 http://dl.dropbox.com/u/23756062/perlwin.html
 https://sites.google.com/site/hiroa63iz/perlwin

 ’Ë–{ –q¶‚³‚ñ, Perlƒƒ‚/Windows‚ł̃tƒ@ƒCƒ‹ƒpƒX
 http://digit.que.ne.jp/work/wiki.cgi?Perl%E3%83%A1%E3%83%A2%2FWindows%E3%81%A7%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%91%E3%82%B9

 chaichanPaPa‚³‚ñ, ƒVƒtƒgJISŠ¿Žš‚̃tƒ@ƒCƒ‹–¼‚Ƀ}ƒbƒ`‚µ‚Ä‚Ý‚é
 http://d.hatena.ne.jp/chaichanPaPa/20080802/1217660826

 —é–Ø ‹I•v‚³‚ñ, Jperl
 http://homepage2.nifty.com/kipp/perl/jperl/

 “n•Ó ”Ž•¶‚³‚ñ, Jperl
 http://www.cpan.org/src/5.0/jperl/
 http://search.cpan.org/~watanabe/
 ftp://ftp.oreilly.co.jp/pcjp98/watanabe/jperlconf.ppt
 
 The Perl Confernce Japan (1998)‚ÅJperlŠJ”­‚ÌŒoˆÜ‚ð•·‚©‚¹‚Ä‚à‚ç‚¢‚Ü‚µ‚½BJPerl ‚©‚ç
 ‚́A“ú–{Œê‘Ήž”Å‚Ì Perl ‚͂ǂ̂悤‚È‚à‚Ì‚ªŽg‚¢‚â‚·‚¢‚Ì‚©‚ð‹³‚í‚è‚Ü‚µ‚½Btr///b ‚à
 ord ‚à reverse ‚à‚Ý‚ñ‚È JPerl ‚Ì“®ì‚ð^Ž—‚µ‚Ü‚µ‚½(‚¨‚©‚°‚ŃeƒXƒgƒvƒƒOƒ‰ƒ€‚Ü‚Å
 ‚à‚炤‚±‚Æ‚ª‚Å‚«‚Ü‚µ‚½)B
 
 Ž„‚à“n•Ó‚³‚ñ‚Ì‚Æ‚«‚Æ“¯‚¶‚­’N‚©‚ª‘‚­‚ñ‚¶‚á‚È‚¢‚©‚Æ(¡‚à)‘Ò‚¿‘±‚¯‚Ä‚¢‚é‚킯‚Å‚·‚ªA
 ‘Ò‚Á‚Ä‚¢‚éŠÔ‚É Perl ‚Ńvƒƒgƒ^ƒCƒv‚ðì‚Á‚Ä‚¨‚«‚Ü‚µ‚½B‘҂‚̂͊y‚µ‚¢‚±‚Æ‚Å‚·B

 Chuck Houpt ‚³‚ñ, –ì’à ”ü’qŽq‚³‚ñ, MacJPerl
 http://habilis.net/macjperl/index.j.html

 ÎŠ_ Œ›ˆê‚³‚ñ, Pod-PerldocJp, ƒ‚ƒ_ƒ“Perl‚̐¢ŠE‚ւ悤‚±‚»
 http://search.cpan.org/dist/Pod-PerldocJp/
 http://gihyo.jp/dev/serial/01/modern-perl/0031
 http://gihyo.jp/dev/serial/01/modern-perl/0032
 http://gihyo.jp/dev/serial/01/modern-perl/0033
 
 uƒ‚ƒ_ƒ“Perl‚̐¢ŠE‚ւ悤‚±‚»v‚̘AÚ‚ª‚Æ‚Ä‚àŽQl‚É‚È‚è‚Ü‚·B“Á‚É‘æ31‰ñ‚©‚ç‘æ33‰ñ‚Í
 JPerl ‚ÉŠÖ˜A‚µ‚½“à—e‚ŁA‹Zp“I‚É‚à—ðŽj“I‚É‚à‚Æ‚Ä‚àãk–§‚È‹LŽ–‚Å‚·B
 
 ‚±‚̃\ƒtƒgƒEƒFƒA‚ªƒ‚ƒ_ƒ“Perl‚ւ̉˂¯‹´‚Æ‚µ‚Ė𗧂Ă΍K‚¢‚Å‚·B

 “¡ Œá˜Y‚³‚ñ, Perl Hackers Hub ‘æ16‰ñ Perl“à•”\‘¢‚̐[‰“‚É”—‚é(2)
 http://gihyo.jp/dev/serial/01/perl-hackers-hub/001602

 ¬Ž” ’e‚³‚ñ, Encode ƒ‚ƒWƒ…[ƒ‹
 http://search.cpan.org/dist/Encode/
 http://www.archive.org/details/YAPCAsia2006TokyoPerl58andUnicodeMythsFactsandChanges (“®‰æ)
 http://yapc.g.hatena.ne.jp/jkondo/ (‰¹º)
 
 YAPC::Asia 2006 Tokyo "Perl5.8 and Unicode: Myths, Facts and Changes" ‚Å Perl5.8
 ‚ł̕ύX“_‚ðÚ‚µ‚­‹³‚¦‚Ä‚à‚ç‚¢‚Ü‚µ‚½BCPAN ‚Ì face icon ‚Í‚±‚̃Xƒ‰ƒCƒh‚ɏo‚Ä‚­‚é
 Perl5.6 = a city without bridges ‚̉摜‚©‚çƒqƒ“ƒg‚𓾂Ă¢‚Ü‚·B‚±‚ê‚Í5.005ƒVƒeƒB
 ‚©‚çƒGƒXƒP[ƒv‚·‚邽‚߂̃uƒŠƒbƒW‚ð•\‚킵‚Ä‚¢‚Ü‚·B

 ‚‹´ ³„‚³‚ñ, JPerl Wiki
 http://ja.jperl.wikia.com/wiki/JPerl_Wiki

 Juerd ‚³‚ñ, Perl Unicode Advice
 http://juerd.nl/site.plp/perluniadvice

 daily dayflower ‚³‚ñ, 2008-06-25 perluniadvice
 http://d.hatena.ne.jp/dayflower/20080625/1214374293

 Jesse Vincent ‚³‚ñ, Compatibility is a virtue
 http://www.nntp.perl.org/group/perl.perl5.porters/2010/05/msg159825.html

=cut