Manpages

NAME

perljp - 日 本 語 Perl ガ イ ド

説 明

Perl の 世 界 へ よ う こ そ !

Perl 5.8.0 よ り 、 Unicodeサ ポ ー ト が 大 幅 に 強 化 さ れ 、 そ の 結 果 ラ テ ン 文 字 以 外 の 文 字 コ ー ド の サ ポ ー ト が CJK (中 国 語 、 日 本 語 、 ハ ン グ ル )を 含 め て 加 わ り ま し た 。 Unicodeは 世 界 中 の 文 字 を 一 つ の 文 字 コ ー ド で 扱 う こ と を 目 指 し た 標 準 規 格 で あ り 、 東 か ら 西 、 は た ま た そ の 間 の 文 字 ( ギ リ シ ャ 文 字 、 キ リ ー ル 文 字 、 ア ラ ビ ア 文 字 、 ヘ ブ ラ イ 文 字 、 デ ィ ー ヴ ァ ナ ガ ー リ 文 字 、 な ど な ど ) や 、 こ れ ま で は OSベ ン ダ ー が 独 自 に 定 め て い た 文 字 (PCお よ び Macintosh)が す で に 含 ま れ て い ま す 。

Perl 自 身 は Unicode で 動 作 し ま す 。 Perl ス ク リ プ ト 内 の 文 字 列 リ テ ラ ル や 正 規 表 現 は Unicode を 前 提 と し て い ま す 。 そ し て 入 出 力 の た め に は 、 こ れ ま で 使 わ れ て き た さ ま ざ ま な 文 字 コ ー ド に 対 応 す る モ ジ ュ ー ル 、 「 Encode 」 が 標 準 装 備 さ れ て お り 、 Unicode と こ れ ら の 文 字 コ ー ド の 相 互 変 換 も 簡 単 に 行 え る よ う に な っ て い ま す 。

現 時 点 で Encode が サ ポ ー ト す る 文 字 コ ー ド は 以 下 の と お り で す 。

  7bit-jis      AdobeStandardEncoding AdobeSymbol       AdobeZdingbat
  ascii             big5              big5-hkscs        cp1006
  cp1026            cp1047            cp1250            cp1251
  cp1252            cp1253            cp1254            cp1255
  cp1256            cp1257            cp1258            cp37
  cp424             cp437             cp500             cp737
  cp775             cp850             cp852             cp855
  cp856             cp857             cp860             cp861
  cp862             cp863             cp864             cp865
  cp866             cp869             cp874             cp875
  cp932             cp936             cp949             cp950
  dingbats          euc-cn            euc-jp            euc-kr
  gb12345-raw       gb2312-raw        gsm0338           hp-roman8
  hz                iso-2022-jp       iso-2022-jp-1     iso-8859-1
  iso-8859-10       iso-8859-11       iso-8859-13       iso-8859-14
  iso-8859-15       iso-8859-16       iso-8859-2        iso-8859-3
  iso-8859-4        iso-8859-5        iso-8859-6        iso-8859-7
  iso-8859-8        iso-8859-9        iso-ir-165        jis0201-raw
  jis0208-raw       jis0212-raw       johab             koi8-f
  koi8-r            koi8-u            ksc5601-raw       MacArabic
  MacCentralEurRoman  MacChineseSimp    MacChineseTrad    MacCroatian
  MacCyrillic       MacDingbats       MacFarsi          MacGreek
  MacHebrew         MacIcelandic      MacJapanese       MacKorean
  MacRoman          MacRomanian       MacRumanian       MacSami
  MacSymbol         MacThai           MacTurkish        MacUkrainian
  nextstep          posix-bc          shiftjis          symbol
  UCS-2BE           UCS-2LE           UTF-16            UTF-16BE
  UTF-16LE          UTF-32            UTF-32BE          UTF-32LE
  utf8              viscii

(全 114種 類 )

例 え ば 、 文 字 コ ー ド FOOの フ ァ イ ル を UTF-8に 変 換 す る に は 、 以 下 の よ う に し ま す 。

    perl -Mencoding=FOO,STDOUT,utf8 -pe1 < file.FOO > file.utf8

ま た 、 Perlに は 、 全 部 が Perlで 書 か れ た 文 字 コ ー ド 変 換 ユ ー テ ィ リ テ ィ 、 piconvも 付 属 し て い る の で 、 以 下 の よ う に す る こ と も で き ま す 。

   piconv -f FOO -t utf8 < file.FOO > file.utf8
   piconv -f utf8 -t FOO < file.utf8 > file.FOO

(jcode.pl|Jcode.pm|JPerl) か ら の 移 行
5.8以 前 の 、 ス ク リ プ ト が EUC-JPで あ れ ば リ テ ラ ル だ け は 扱 う こ と が で き ま し た 。 ま た 、 入 出 力 を 扱 う モ ジ ュ ー ル と し て は Jcode.pmが ( <http://openlab.ring.gr.jp/Jcode/>; )、 perl4用 の ユ ー テ ィ リ テ ィ と し て は jcode.plが そ れ ぞ れ 存 在 し 、 日 本 語 の 扱 え る CGIで よ く 利 用 さ れ て い る こ と を 御 存 じ の 方 も 少 な く な い か と 思 わ れ ま す 。 た だ し 、 日 本 語 に よ る 正 規 表 現 を う ま く 扱 う こ と は 不 可 能 で し た 。

5.005以 前 の Perlに は 、 日 本 語 に 特 化 し た ロ ー カ ラ イ ズ 版 、 Jperlが 存 在 し ま し た ( <http://homepage2.nifty.com/kipp/perl/jperl/index.html>; ※1)。 ま た 、 Mac OS 9 .x/Classic用 の Perl、 MacPerlの 日 本 語 版 も MacJPerlと し て 存 在 し て ま し た 。 ( <https://habilis.net/macjperl/>; ).こ れ ら で は 文 字 コ ー ド と し て EUC-JPに 加 え Shift_JISも そ の ま ま 扱 う こ と が で き 、 ま た 日 本 語 に よ る 正 規 表 現 を 扱 う こ と も 可 能 で し た 。

Perl5.8で は 、 こ れ ら の 機 能 が す べ て Perl本 体 だ け で 実 現 で き る 上 に 、 日 本 語 の み な ら ず 上 記 114の 文 字 コ ー ド を す べ て 、 し か も 同 時 に 扱 う こ と が で き ま す 。 さ ら に 、 CPANな ど か ら 新 し い 文 字 コ ー ド 用 の モ ジ ュ ー ル を 入 手 す る こ と も 簡 単 に で き る よ う に な っ て い ま す 。

※1: ホ ス テ ィ ン グ サ ー ビ ス の 終 了 に よ り 現 在 は 閲 覧 で き ま せ ん 。 Vector( <https://www.vector.co.jp/soft/win95/util/se098198.html>; )か ら Window用 の バ イ ナ リ を 、 CPAN( <https://www.cpan.org/src/unsupported/4.036/jperl/>; )か ら perl4用 の パ ッ チ を 入 手 す る こ と が で き ま す 。

入 出 力

以 下 の 例 は い ず れ も Shift_JISの 入 力 を EUC-JPに 変 換 し て 出 力 し ま す 。

  # jcode.pl
  require "jcode.pl";
  while(<>){
    jcode::convert(*_, 'euc', 'sjis');
    print;
  }
  # Jcode.pm
  use Jcode;
  while(<>){
        print Jcode->new($_, 'sjis')->euc;
  }
  # Perl 5.8
  use Encode;
  while(<>){
    from_to($_, 'shiftjis', 'euc-jp');
    print;
  }
  # Perl 5.8 - encoding を 利 用 し て
  use encoding 'euc-jp', STDIN => 'shiftjis';
  while(<>){
        print;
  }

Jperl 互 換 ス ク リ プ ト

い わ ゆ る "shebang"を 変 更 す る だ け で 、 Jperl用 の scriptの ほ と ん ど は 変 更 な し に 利 用 可 能 だ と 思 わ れ ま す 。

   #!/path/to/jperl
   ↓
   #!/path/to/perl -Mencoding=euc-jp

詳 し く は perldoc encoding を 参 照 し て く だ さ い 。

さ ら に 詳 し く
Perlに は 膨 大 な 資 料 が 付 属 し て お り 、 Perlの 新 機 能 や Unicodeサ ポ ー ト 、 そ し て Encodeモ ジ ュ ー ル の 使 用 法 な ど が 細 か く 網 羅 さ れ て い ま す ( 残 念 な が ら 、 ほ と ん ど 英 語 で は あ り ま す が ) 。 以 下 の コ マ ン ド で そ れ ら の 一 部 を 閲 覧 す る こ と が 可 能 で す 。

  perldoc perlunicode # Perlの Unicodeサ ポ ー ト 全 般
  perldoc Encode      # Encodeモ ジ ュ ー ル に 関 し て
  perldoc Encode::JP  # う ち 日 本 語 文 字 コ ー ド に 関 し て

Perl全 般 に 関 す る URL
<https://www.perl.org/>;

Perl ホ ー ム ペ ー ジ

<https://www.perl.com/>;

Perl 財 団 が 営 業 す る 文 章 作 品 集

<https://www.cpan.org/>;

CPAN (Comprehensive Perl Archive Network)

<https://metacpan.org/>;

MetaCPAN CPANの 検 索 エ ン ジ ン

<https://lists.perl.org/>;

Perl メ ー リ ン グ リ ス ト 集

<https://perldoc.jp/>;

perldoc.jp Perl の 公 式 ド キ ュ メ ン ト 、 モ ジ ュ ー ル ド キ ュ メ ン ト の 日 本 語 訳

Perlの 修 得 に 役 立 つ URL
<http://www.oreilly.com.tw/>;

O’Reilly 社 の Perl関 連 書 籍 (繁 体 字 中 国 語 )

<http://www.oreilly.com.cn/>;

O’Reilly 社 の Perl関 連 書 籍 (簡 体 字 中 国 語 )

<https://www.oreilly.co.jp/catalog/>;

オ ラ イ リ ー 社 の Perl関 連 書 籍 (日 本 語 )

Perl に 関 す る 団 体
<https://www.pm.org/groups/asia.html>;

ア ジ ア 地 域 の Perl Mongers (Perlの ユ ー ザ ー グ ル ー プ ) 一 覧

<https://japan.perlassociation.org>;

一 般 社 団 法 人 Japan Perl Association ( JPA ) Perl技 術 及 び 文 化 の 啓 蒙 ・ 促 進 の た め の 組 織

Unicode関 連 の URL
<https://www.unicode.org/>;

Unicode コ ン ソ ー シ ア ム (Unicode規 格 の 選 定 団 体 )

<https://www.cl.cam.ac.uk/%7Emgk25/unicode.html>

UTF-8 and Unicode FAQ for Unix/Linux

<https://wiki.kldp.org/Translations/html/UTF8-Unicode-KLDP/UTF8-Unicode-KLDP.html>;

UTF-8 and Unicode FAQ for Unix/Linux (ハ ン グ ル 訳 )

AUTHORS

Jarkko Hietaniemi <jhi [AT] iki.fi>

Dan Kogai (小 飼   弾 ) <dankogai [AT] dan.jp>

Shogo Ichinose (一 野 瀬   翔 吾 ) <shogo82148 [AT] gmail.com>