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 10891f110e0Safresh1 ↓ 10955745691Smillert #!/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