| ホーム > Perlニュースレター > バックナンバー > 第5号 | ||||||
|
|
Perlニュースレター 第5号 (2000年3月30日)
----------------------------------------------------------------------
Perlニュースレター 第5号 (2000年3月30日発行)
http://www.context.co.jp/perlnews/ 発行部数 2913部
----------------------------------------------------------------------
▼このメールはお申し込みいただいたアドレス(cond@context.co.jp)
に無料でお届けしているものです。
▼以下のページで配送中止の手続きができます。
http://www.context.co.jp/perlnews/
======================================================================
◆◆ 目 次 ◆◆
◇ 初心者コーナー
* リスト (1)
◇ Perl 5.6の新機能 (2)
◇ 最近のトピックス
* Perl 5.6.0のリリース
◇ 最新バージョン情報
◇ 編集後記
======================================================================
■■ お知らせ ■■
======================================================================
Perlニュースレターの発行者(近藤)が監訳した本が出版されました。
「Perlクイック リファレンス」
Ellen Siever、Stephen Spainhour、Nathan Patwardhan 著
近藤 嘉雪、台場 圭一 監訳
山本浩、イエローレーベル 訳
オライリー・ジャパン
784ページ
本体価格4,500円
ISBN: 4-900900-72-9
本書は、Perl in a Nutshellの日本語訳です。Perl言語そのものに加え、良く
使われるモジュールのほとんどを網羅したリファレンスになっています。詳し
くはオライリー・ジャパンのホームページをご覧ください。
▼オライリー・ジャパン
http://www.oreilly.co.jp/
======================================================================
■■ 初心者コーナー
======================================================================
このコーナーでは、Perlを学び始めたばかりの人を対象に、基本とな
るポイントを解説します。
今回から2回にわたってリストについてお話しします。
----------------------------------------------------------------------
◇リストとは?
スクリプトの中にリスト値を直接に記述するには、リストという構文を使いま
す。リストの書き方はとても簡単です。値をカンマで区切って並べて、その全
体をカッコで囲んでやります。例えば、
(10, 20, 30, 40)
というリストは、4つの値10、20、30、40から成るリスト値を表わします。
リストは、リスト値が期待されるような場所(いわゆるリストコンテキスト)
ならどこにでも使うことができます。最も一般的なのは、次のように配列変数
に対して値を設定するという使い方でしょう。
@a = (10, 20, 30, 40);
このコードによって、配列変数@aは、10, 20, 30, 40という4つの要素を持つ
ようになります。配列@aの各要素の値は、$a[0]が10、$a[1]が20、$a[2]が30、
$a[3]が40となります。代入する時点で@aに入っていた値は捨てられます。
◇空リスト
要素を1つも持たないリストは空リストと呼ばれます。空リストは、()と書き
ます。(実際には、開きカッコと閉じカッコの間にスペース、タブ、改行文字、
コメントを挟んでもかまいません。)
配列に対して空リストを代入することによって、要素を1つも持たない空の状
態にすることができます。
@a = (); # @aは要素を1つも持たない状態になる
◇リストに対する添え字付け
配列と同じように、リストに対して添え字を指定して要素を取り出すことがで
きます。例えば、次のコードを見てください。
$x = 2;
$a = ("zero", "one", "two", "three")[$x];
1行目では$xに2を代入しています。2行目の代入演算子の右辺では、("zero",
"one", "two", "three")というリストに対して、[$x]によって添え字を指定し
ています。変数$xには2が入っているので、リストのうち、添え字2に対応する
値、つまり"two"が得られます。(配列の場合と同じように、リストの先頭の
要素が添え字0に対応します。)その結果、変数$aには"two"が代入されます。
◇リストと配列の違い
このようにリストと配列はよく似ていますが、大きな違いがあります。それは、
配列は変数としての実体があるのに対して、リストは値に過ぎないという点で
す。
配列の場合には、全体に値を代入したり、個々の要素に値を代入することがで
きます。また、push、pop、shift、unshift、spliceなどの関数を使って、内
容を変更することができます。これに対して、リストはあくまでも値であり、
実体がないのでその内容を変更することはできません。
これは、スカラー変数とスカラー値の関係に置き換えればわかると思います。
スカラー変数の値を変えることはできます。それに対して、スカラー値である
数値や文字列そのものの値を変えることはできません。スカラー値をリストに、
スカラー変数を配列に置き換えて考えれば、理解できるでしょう。
◇リストとスカラーコンテキスト
リスト値が期待されていない場所、つまりスカラーコンテキストにリストを置
くと何が起こるでしょうか? 例えば、次のように、リストをスカラー変数$aに
代入すると、$aの値は何になるでしょう?
$a = (10, 20, 30);
実は、リストをスカラーコンテキストに置くと、それはリストとしては認識さ
れません。値をカンマ演算子で結びつけて、(数式をまとめる働きをする)カッ
コで囲んだものとして解釈されるのです。
カンマ演算子は、左オペランドを評価してその値を捨てます。次に、右オペラ
ンドを評価してその値を結果として返します。わかりやすく言えば、右オペラ
ンドの値がカンマ演算子の値になるのです。また、カンマ演算子は左から右へ
と評価される(左結合)ので、上の例の右辺のようにカンマ演算子が連続して
いる場合には、最後の値30が全体の値となります。ですから、変数$aには30が
代入されます。
これに対して、配列をスカラーコンテキストで評価すると、要素の個数が得ら
れます。この違いに気をつけてください。例えば、次のコードを実行すると、
$xには4が、$yには40が得られます。
@a = (10, 20, 30, 40);
$x = @a;
$y = (10, 20, 30, 40);
======================================================================
■■ Perl 5.6の新機能 (2)
======================================================================
3月23日にPerl 5.6.0がリリースされました。前バージョン5.005のリ
リースから1年8か月ぶりの新バージョンとなります。
このコーナーでは、Perl 5.6で新たに導入される機能を紹介します。
----------------------------------------------------------------------
◇良いニュース ― Unicodeのサポート
Perl 5.6の目玉はUnicodeのサポートです。バージョン5.005までのPerlでは、
「1文字が1バイトである」という前提で文字列を扱っていました。そのために、
2バイト長の文字コードを使用する日本語を扱うには、改造を加えた日本語用
のバージョンjperlを使わなければなりませんでした[注1]。
注1 実際には、文字コードとしてEUCコードを使う場合には、英語版のperl
でも文字列などに日本語を使うことができます。しかし、英語版の
perlはあくまでも1バイトを1文字として扱うので、正規表現マッチを
行なったり、文字列を(バイト単位ではなく)文字単位で操作するに
は、ちょっとしたテクニックが必要になります。
Perl 5.6では、Unicodeの文字列をサポートするようになりました。Unicode文
字はUTF-8というエンコーディングで表現されます。日本語の文字はUTF-8によっ
て表現されることになります。
Perlは、すべての文字列に対して、それがUTF-8文字列であるか、あるいは
(従来の)バイト文字列であるかを識別する印を付けておきます。そして、文
字列を扱う際には、UTF-8ならば(バイト単位ではなく)文字単位で処理を行
ないます。例えば、length関数は、文字列がUTF-8ならば、バイト数の代わり
に、文字数を返してくれます。
◇そして悪いニュース
ここまでは良いニュースだったのですが、悪いニュースもお伝えしなければな
りません。
実は、バージョン5.6.0では、Unicodeのサポートはまだ不完全で、実験的な機
能(experimental feature)にとどまっています。
また、Perl 5.6では、日本語はUnicode(UTF-8)で表現されます。そのために、
従来の文字コード(Shift JISやEUC)で表現されたファイルを扱うためには、
ファイルを読み書きする際にトランスペアレントにコードを変換する必要があ
りますが、そのためのメカニズムはまだ実装されていません。(これは、近い
将来に実装される予定です。)
そんなわけで、現行のバージョン5.6.0では、まだjperlのように日本語処理を
行なうことはできません。せっかくの新バージョンですが、本格的な日本語処
理ができるようになるまでには、もう少し待たなければなりません。
ところで、従来のバージョンとの互換性を保つために、Perl 5.6では、通常の
データはUTF-8ではなく、バイト列として扱います。ですから、先ほど[注1]で
紹介した、文字コードをEUCにして英語版のperlを利用するという方法ならば、
バージョン5.6.0でも従来のスクリプトがそのまま使えるはずです。
======================================================================
■■ 最近のトピックス
======================================================================
●Perl 5.6.0のリリース●
3月24日付の号外でお知らせしたように、3月23日に新バージョン5.6.0がリリー
スされました。1998年7月にバージョン5.005がリリースされてから、1年8か月
ぶりのバージョンアップになります。
※Perl 5.6の入手先が、号外(3月24日付)に掲載したURLから変わってい
るのでご注意ください。
▼Perl 5.6の入手先
http://www.perl.com/CPAN/src/perl-5.6.0.tar.gz
▼Perl 5.6.0のリリースについて
(www.perl.com掲載の記事、英語)
http://www.perl.com/pub/n/Perl_5.6.0_is_out!
▼Perl 5.6.0リリースのアナウンス記事 (perl5 porters MLより、英語)
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2000-03/msg02596.html
また、ActiveStateは、バージョン5.6をベースにしたActivePerl 5.6 (Build
613)をリリースしました。Windows 95/98/NT/2000、Solaris、Linux用のバイ
ナリ、ソースが公開されています。
▼ActivePerl 5.6に関する説明
http://www.activestate.com/ActivePerl/default.htm
▼ActivePerl 5.6の入手先
http://www.activestate.com/ActivePerl/download.htm
======================================================================
■■ 最新バージョン情報 2000年3月28日現在
======================================================================
このコーナーでは、Perl処理系とユーティリティの最新バージョンと
その入手先を紹介します。
行頭に?が付いてる部分は、今回更新された情報です。
行頭に+が付いている部分は新規に追加された情報です。
----------------------------------------------------------------------
●perl●
2000年3月23日にPerl 5.6がリリースされました。しばらくの間は、 Perl
5.005とPerl 5.6の情報を提供していきます。
◇perl5.005
最新バージョンは5.005_03です。
? ▼perl 5.005_03の入手先
? http://www.perl.com/CPAN/src/perl5.005_03.tar.gz
+ ◇perl 5.6
+ 最新バージョンは5.6.0です(3月23日リリース)
+
+ ▼perl 5.6.0の入手先
+ http://www.perl.com/CPAN/src/perl-5.6.0.tar.gz
●jperl●
jperlは、perlを日本語対応にするためのパッチです。最新バージョンは
jperl5.005_03-20000212.pat.gzです。
▼jperl5.005_03-20000212.pat.gzの入手先
http://www.perl.com/CPAN/authors/Hirofumi_Watanabe/jperl5.005_03-20000212.pat.gz
●Windows版●
◇ActivePerl
? ActivePerlは、ActiveStateによるWin32(Windows 95/98/NT/2000)
? 用のperlです。フリーで入手できます。最新バージョンはBuild 613
? で、5.6.0をベースにしています。バイナリ(とソース)が配布され
? ています。また、Perl 5.005_03ベースのBuild 522も公開されていま
? す。
?
? ▼ActivePerlの入手先(Build 522も613もここから入手可能)
? http://www.activestate.com/ActivePerl/download.htm
▼ActiveState
http://www.activestate.com/
◇JPerl for MS-Windows
ActivePerlにjperlパッチを組み込んで日本語対応にしたものです。
最新バージョンはjperl522で、ActivePerl Build 522と
jperl5.005_03-990822.pat.gzをベースにしています。バイナリ(と
ソース)が配布されています。
▼jperl522の入手先
http://www.shonan.ne.jp/~kipp/perl/jperl_win32.html
●Macintosh版●
◇MacPerl
Macintosh用のperlです。最新バージョンはMacPerl 5.20r4で、
5.004_04をベースにしています。バイナリ(とソース)が配布されて
います。
▼MacPerl 5.20r4の入手先
http://www.perl.com/CPAN/ports/mac/Mac_Perl_520r4_appl.bin
▼MacPerlに関する情報
http://www.perl.com/CPAN/ports/index.html#mac
◇MacJPerl(日本語版)
Macintosh用の日本語対応のperlです。最新バージョンはMacJPerl
5.2.0r4 J1です。MacPerl 5.20r4(5.004_04ベース)と
jper5.004_04-980303.patをベースにしています。バイナリが配布さ
れています。
▼MacJPerl 5.2.0r4 J1の入手先
http://world.std.com/~habilis/macjperl/MacJP5.j.htm
●日本語のコード変換ユーティリティ●
◇jcode.pl
日本語のコード変換を行うためのライブラリです(Perl 4でもPerl 5でも
使えます)。最新バージョンは2.11です。
▼jcode.pl 2.11の入手先
ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/jcode.pl-2.11
▼jcode.plの変更履歴
ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/jcode.pl-history
▼jcode.pl の私的な解説書
http://ina.kappe.co.jp/~sabre/kcode/jcode.html
◇Jcode.pm
日本語のコード変換を行うためのモジュールです(Perl 5専用。Perl
4では使えません)。最新バージョンは0.60です。
▼Jcode.pmの入手先
http://openlab.ring.gr.jp/Jcode/index-j.html
●その他●
Perlニュースレターの発行者(近藤 嘉雪)による、Perlに関する情報をま
とめたページです。「Perlプログラミング」「初めてのPerl」に関する情報
もあります。ぜひお立ち寄りください。
▼Perl情報メモ
http://www.context.co.jp/~cond/perlinfo/
======================================================================
■■ 編集後記
----------------------------------------------------------------------
▼ついにPerl 5.6がリリースされました。記事にも書きましたが、残念ながら、
現段階では日本語を扱うことはできません。Perlニュースレターでは、
Unicodeサポートの進展について、今後ともフォローしていきます。
▼第6号は、4月11日頃発行の予定です。
近藤 嘉雪 (cond@context.co.jp)
======================================================================
Perlニュースレター 第5号 (2000年3月30日発行)
主筆:-) 近藤 嘉雪
発行元 有限会社コンテキスト(http://www.context.co.jp/)
▼バックナンバーは: http://www.context.co.jp/perlnews/bn/
▼配信申込/配信中止は: http://www.context.co.jp/perlnews/
▼ご意見・ご感想・お問い合わせは:
mailto:perlnews@context.co.jp
======================================================================
Copyright 2000 (有)コンテキスト, All rights reserved.
「Perlニュースレター」に掲載された記事を許可なく転載することを禁じます。
======================================================================
|
|||||