xref: /openbsd/gnu/usr.bin/perl/README.jp (revision f2a19305)
1*f2a19305Safresh1# vim: syntax=pod
2*f2a19305Safresh1
391f110e0Safresh1=encoding utf8
4850e2753Smillert
555745691Smillert=head1 NAME
655745691Smillert
791f110e0Safresh1perljp - 日本語 Perl ガイド
855745691Smillert
991f110e0Safresh1=head1 説明
1055745691Smillert
1191f110e0Safresh1Perl の世界へようこそ!
1255745691Smillert
1391f110e0Safresh1Perl 5.8.0 より、Unicodeサポートが大幅に強化され、その結果ラテン文字以外の文字コードのサポートが CJK (中国語、日本語、ハングル)を含めて加わりました。Unicodeは世界中の文字を一つの文字コードで扱うことを目指した標準規格であり、東から西、はたまたその間の文字(ギリシャ文字、キリール文字、アラビア文字、ヘブライ文字、ディーヴァナガーリ文字、などなど)や、これまではOSベンダーが独自に定めていた文字(PCおよびMacintosh)がすでに含まれています。
1455745691Smillert
1591f110e0Safresh1Perl 自身は Unicode で動作します。Perl スクリプト内の文字列リテラルや正規表現は Unicode を前提としています。そして入出力のためには、これまで使われてきたさまざまな文字コードに対応するモジュール、「 Encode 」が標準装備されており、Unicode とこれらの文字コードの相互変換も簡単に行えるようになっています。
1655745691Smillert
1791f110e0Safresh1現時点で Encode がサポートする文字コードは以下のとおりです。
1855745691Smillert
1955745691Smillert  7bit-jis      AdobeStandardEncoding AdobeSymbol       AdobeZdingbat
2055745691Smillert  ascii             big5              big5-hkscs        cp1006
2155745691Smillert  cp1026            cp1047            cp1250            cp1251
2255745691Smillert  cp1252            cp1253            cp1254            cp1255
2355745691Smillert  cp1256            cp1257            cp1258            cp37
2455745691Smillert  cp424             cp437             cp500             cp737
2555745691Smillert  cp775             cp850             cp852             cp855
2655745691Smillert  cp856             cp857             cp860             cp861
2755745691Smillert  cp862             cp863             cp864             cp865
2855745691Smillert  cp866             cp869             cp874             cp875
2955745691Smillert  cp932             cp936             cp949             cp950
3055745691Smillert  dingbats          euc-cn            euc-jp            euc-kr
3155745691Smillert  gb12345-raw       gb2312-raw        gsm0338           hp-roman8
3255745691Smillert  hz                iso-2022-jp       iso-2022-jp-1     iso-8859-1
3355745691Smillert  iso-8859-10       iso-8859-11       iso-8859-13       iso-8859-14
3455745691Smillert  iso-8859-15       iso-8859-16       iso-8859-2        iso-8859-3
3555745691Smillert  iso-8859-4        iso-8859-5        iso-8859-6        iso-8859-7
3655745691Smillert  iso-8859-8        iso-8859-9        iso-ir-165        jis0201-raw
3755745691Smillert  jis0208-raw       jis0212-raw       johab             koi8-f
3855745691Smillert  koi8-r            koi8-u            ksc5601-raw       MacArabic
3955745691Smillert  MacCentralEurRoman  MacChineseSimp    MacChineseTrad    MacCroatian
4055745691Smillert  MacCyrillic       MacDingbats       MacFarsi          MacGreek
4155745691Smillert  MacHebrew         MacIcelandic      MacJapanese       MacKorean
4255745691Smillert  MacRoman          MacRomanian       MacRumanian       MacSami
4355745691Smillert  MacSymbol         MacThai           MacTurkish        MacUkrainian
4455745691Smillert  nextstep          posix-bc          shiftjis          symbol
4555745691Smillert  UCS-2BE           UCS-2LE           UTF-16            UTF-16BE
4655745691Smillert  UTF-16LE          UTF-32            UTF-32BE          UTF-32LE
4755745691Smillert  utf8              viscii
4855745691Smillert
4991f110e0Safresh1(全114種類)
5055745691Smillert
5191f110e0Safresh1例えば、文字コードFOOのファイルをUTF-8に変換するには、以下のようにします。
5255745691Smillert
5355745691Smillert    perl -Mencoding=FOO,STDOUT,utf8 -pe1 < file.FOO > file.utf8
5455745691Smillert
5591f110e0Safresh1また、Perlには、全部がPerlで書かれた文字コード変換ユーティリティ、piconvも付属しているので、以下のようにすることもできます。
5655745691Smillert
5755745691Smillert   piconv -f FOO -t utf8 < file.FOO > file.utf8
5855745691Smillert   piconv -f utf8 -t FOO < file.utf8 > file.FOO
5955745691Smillert
60de8cc8edSafresh1=head2 (jcode.pl|Jcode.pm|JPerl) からの移行
6155745691Smillert
625759b3d2Safresh15.8以前の、スクリプトがEUC-JPであればリテラルだけは扱うことができました。また、入出力を扱うモジュールとしてはJcode.pmが( L<http://openlab.ring.gr.jp/Jcode/> )、perl4用のユーティリティとしてはjcode.plがそれぞれ存在し、日本語の扱えるCGIでよく利用されていることを御存じの方も少なくないかと思われます。ただし、日本語による正規表現をうまく扱うことは不可能でした。
6355745691Smillert
64de8cc8edSafresh15.005以前のPerlには、日本語に特化したローカライズ版、Jperlが存在しました( L<http://homepage2.nifty.com/kipp/perl/jperl/index.html> ※1)。また、Mac OS 9.x/Classic用のPerl、MacPerlの日本語版もMacJPerlとして存在してました。( L<https://habilis.net/macjperl/> ).これらでは文字コードとしてEUC-JPに加えShift_JISもそのまま扱うことができ、また日本語による正規表現を扱うことも可能でした。
6555745691Smillert
6691f110e0Safresh1Perl5.8では、これらの機能がすべてPerl本体だけで実現できる上に、日本語のみならず上記114の文字コードをすべて、しかも同時に扱うことができます。さらに、CPANなどから新しい文字コード用のモジュールを入手することも簡単にできるようになっています。
6755745691Smillert
68de8cc8edSafresh1※1: ホスティングサービスの終了により現在は閲覧できません。 Vector( L<https://www.vector.co.jp/soft/win95/util/se098198.html> )からWindow用のバイナリを、CPAN( L<https://www.cpan.org/src/unsupported/4.036/jperl/> )からperl4用のパッチを入手することができます。
69de8cc8edSafresh1
7055745691Smillert=over 4
7155745691Smillert
7255745691Smillert=item *
7355745691Smillert
7491f110e0Safresh1入出力
7555745691Smillert
76de8cc8edSafresh1以下の例はいずれもShift_JISの入力をEUC-JPに変換して出力します。
7755745691Smillert
7855745691Smillert  # jcode.pl
7955745691Smillert  require "jcode.pl";
8055745691Smillert  while(<>){
8185009909Smillert    jcode::convert(*_, 'euc', 'sjis');
8255745691Smillert    print;
8355745691Smillert  }
8455745691Smillert  # Jcode.pm
8555745691Smillert  use Jcode;
8655745691Smillert  while(<>){
8755745691Smillert  	print Jcode->new($_, 'sjis')->euc;
8855745691Smillert  }
8955745691Smillert  # Perl 5.8
9055745691Smillert  use Encode;
9155745691Smillert  while(<>){
9255745691Smillert    from_to($_, 'shiftjis', 'euc-jp');
9355745691Smillert    print;
9455745691Smillert  }
9591f110e0Safresh1  # Perl 5.8 - encoding を利用して
9685009909Smillert  use encoding 'euc-jp', STDIN => 'shiftjis';
9755745691Smillert  while(<>){
9855745691Smillert  	print;
9955745691Smillert  }
10055745691Smillert
10155745691Smillert=item *
10255745691Smillert
10391f110e0Safresh1Jperl 互換スクリプト
10455745691Smillert
10591f110e0Safresh1いわゆる"shebang"を変更するだけで、Jperl用のscriptのほとんどは変更なしに利用可能だと思われます。
10655745691Smillert
10755745691Smillert   #!/path/to/jperl
10891f110e0Safresh110955745691Smillert   #!/path/to/perl -Mencoding=euc-jp
11055745691Smillert
11191f110e0Safresh1詳しくは perldoc encoding を参照してください。
11255745691Smillert
11355745691Smillert=back
11455745691Smillert
11591f110e0Safresh1=head2 さらに詳しく
11655745691Smillert
11791f110e0Safresh1Perlには膨大な資料が付属しており、Perlの新機能やUnicodeサポート、そしてEncodeモジュールの使用法などが細かく網羅されています(残念ながら、ほとんど英語ではありますが)。以下のコマンドでそれらの一部を閲覧することが可能です。
11855745691Smillert
11991f110e0Safresh1  perldoc perlunicode # PerlのUnicodeサポート全般
12091f110e0Safresh1  perldoc Encode      # Encodeモジュールに関して
12191f110e0Safresh1  perldoc Encode::JP  # うち日本語文字コードに関して
12255745691Smillert
12391f110e0Safresh1=head2 Perl全般に関する URL
12455745691Smillert
12555745691Smillert=over 4
12655745691Smillert
127de8cc8edSafresh1=item L<https://www.perl.org/>
12855745691Smillert
129de8cc8edSafresh1Perl ホームページ
13055745691Smillert
131de8cc8edSafresh1=item L<https://www.perl.com/>
132de8cc8edSafresh1
133de8cc8edSafresh1Perl 財団が営業する文章作品集
134de8cc8edSafresh1
135de8cc8edSafresh1=item L<https://www.cpan.org/>
13655745691Smillert
13755745691SmillertCPAN (Comprehensive Perl Archive Network)
13855745691Smillert
139de8cc8edSafresh1=item L<https://metacpan.org/>
140de8cc8edSafresh1
141de8cc8edSafresh1MetaCPAN CPANの検索エンジン
142de8cc8edSafresh1
143de8cc8edSafresh1=item L<https://lists.perl.org/>
14455745691Smillert
14591f110e0Safresh1Perl メーリングリスト集
14655745691Smillert
147de8cc8edSafresh1=item L<https://perldoc.jp/>
148de8cc8edSafresh1
149de8cc8edSafresh1perldoc.jp Perl の公式ドキュメント、モジュールドキュメントの日本語訳
150de8cc8edSafresh1
15155745691Smillert=back
15255745691Smillert
15391f110e0Safresh1=head2 Perlの修得に役立つ URL
15455745691Smillert
15555745691Smillert=over 4
15655745691Smillert
157b39c5158Smillert=item L<http://www.oreilly.com.cn/>
15855745691Smillert
15991f110e0Safresh1O'Reilly 社のPerl関連書籍(簡体字中国語)
16055745691Smillert
161de8cc8edSafresh1=item L<https://www.oreilly.co.jp/catalog/>
16255745691Smillert
16391f110e0Safresh1オライリー社のPerl関連書籍(日本語)
16455745691Smillert
16555745691Smillert=back
16655745691Smillert
167de8cc8edSafresh1=head2 Perl に関する団体
16855745691Smillert
16955745691Smillert=over 4
17055745691Smillert
171de8cc8edSafresh1=item L<https://www.pm.org/groups/asia.html>
172de8cc8edSafresh1
173de8cc8edSafresh1アジア地域の Perl Mongers (Perlのユーザーグループ) 一覧
174de8cc8edSafresh1
175de8cc8edSafresh1=item L<https://japan.perlassociation.org>
176de8cc8edSafresh1
177de8cc8edSafresh1一般社団法人Japan Perl Association (JPA) Perl技術及び文化の啓蒙・促進のための組織
17855745691Smillert
17955745691Smillert=back
18055745691Smillert
18191f110e0Safresh1=head2 Unicode関連のURL
18255745691Smillert
18355745691Smillert=over 4
18455745691Smillert
185de8cc8edSafresh1=item L<https://www.unicode.org/>
18655745691Smillert
18791f110e0Safresh1Unicode コンソーシアム (Unicode規格の選定団体)
18855745691Smillert
189de8cc8edSafresh1=item L<https://www.cl.cam.ac.uk/%7Emgk25/unicode.html>
19055745691Smillert
19155745691SmillertUTF-8 and Unicode FAQ for Unix/Linux
19255745691Smillert
193de8cc8edSafresh1=item L<https://wiki.kldp.org/Translations/html/UTF8-Unicode-KLDP/UTF8-Unicode-KLDP.html>
19455745691Smillert
19591f110e0Safresh1UTF-8 and Unicode FAQ for Unix/Linux (ハングル訳)
19655745691Smillert
19755745691Smillert=back
19855745691Smillert
19955745691Smillert=head1 AUTHORS
20055745691Smillert
201de8cc8edSafresh1=over
202de8cc8edSafresh1
203de8cc8edSafresh1=item * Jarkko Hietaniemi E<lt>jhi@iki.fiE<gt>
204de8cc8edSafresh1
205de8cc8edSafresh1=item * Dan Kogai (小飼 弾) E<lt>dankogai@dan.co.jpE<gt>
206de8cc8edSafresh1
207de8cc8edSafresh1=item * Shogo Ichinose (一野瀬 翔吾) E<lt>shogo82148@gmail.comE<gt>
208de8cc8edSafresh1
209de8cc8edSafresh1=back
21055745691Smillert
21155745691Smillert=cut
212