| ホーム > Perlニュースレター > バックナンバー > 第3号 | ||||||
|
|
Perlニュースレター 第3号 (2000年3月23日)
----------------------------------------------------------------------
Perlニュースレター 第3号 (2000年2月23日発行)
http://www.context.co.jp/perlnews/ 発行部数 2364部
----------------------------------------------------------------------
▼このメールはお申し込みいただいたアドレス(cond@context.co.jp)
に無料でお届けしているものです。
▼以下のページで配送中止の手続きができます。
http://www.context.co.jp/perlnews/
======================================================================
◆◆ 目 次 ◆◆
◇ 初心者コーナー
スカラーコンテキストとリストコンテキスト
◇ 最近のトピックス
* Perl 5.5.650のリリース
* バージョン番号の付け方の変更について
◇ 最新バージョン情報
◇ 編集後記
======================================================================
■■ 初心者コーナー
======================================================================
このコーナーでは、Perlを学び始めたばかりの人を対象に、基本とな
るポイントを解説します。
今回は、式の値を計算する際に重要な役割を果たすコンテキストとい
う概念について解説します。
----------------------------------------------------------------------
◇3種類の変数――スカラー、配列、ハッシュ
本題に入る前に、まずPerlのデータ型について少しおさらいしておきましょう。
Perlでは、基本的なデータ型として、スカラー、配列、ハッシュをサポートし
ています。変数もこれら3種類のものが用意されています。スカラーは、1個
の値だけを持つものです。スカラー変数は先頭に$を付けて$sのように書きま
す。
配列は複数の値を順番に並べたもので、整数の添え字によって要素を指定しま
す。配列変数は先頭に@を付けて@aのように書きます。また、配列内の1つの要
素を表わすには、$a[$i]のように書きます。(ここでは、添え字としてスカラー
変数$iを指定しています。)
ハッシュは複数の値を(順番を付けずに)まとめたもので、キー(任意の文字列)
によって要素を指定します。ハッシュ変数は先頭に%を付けて%hのように書き
ます。ハッシュ内の1つの要素を表わすには、$h{$k}のように書きます。(こ
こでは、キーとしてスカラー変数$kを指定しています。)
これら3種類の変数の使い方をまとめると次のようになります。
----------------------------------------------------
変数の種類 変数の書き方 特定の要素を指定する
----------------------------------------------------
スカラー変数 $s
配列変数 @a $a[$i]
ハッシュ変数 %h $h{$k}
----------------------------------------------------
◇スカラー値とリスト値
いま説明したように、Perlには、変数の種類として、スカラー、配列、ハッシュ
の3種類があります。しかし、式の値を計算する際には、これらの代わりに、
スカラー値とリスト値という概念が使われます。
Perlでは、単一の値のことをスカラー値(scalar value)といいます。これに
対して、複数の値、つまり複数個のスカラー値を並べたものをリスト値(list
value)といいます。(正確に言えば、リスト値は、0個以上の任意の個数のス
カラー値を並べたものです。)また、「値」を省略して、単に「スカラー」
「リスト」と呼ぶこともあります。
◇スカラーコンテキストとリストコンテキスト
ここで言い回しを1つ紹介しておきましょう。プログラミングの世界では、
「(式の)値を計算する」ことを、「(式を)評価する」といいます。例えば、
「関数を評価する」といったら、「関数の値を計算する」ことだと思ってくだ
さい。
それでは、本題のコンテキストという概念を説明することにしましょう。コン
テキスト(context)とは、式を評価する際に、(その式に)どんな値を返し
てほしいかという「要望」を表わす概念です。どのような状況で式を評価した
かによって、適用されるコンテキストが決まります。コンキストにはいくつか
の種類がありますが、代表的なものとして、スカラーコンテキストとリストコ
ンテキストがあります。
スカラーコンテキストでは、式はスカラー値を返すことが期待されます。これ
に対して、リストコンテキストでは、式は、リスト値(つまり複数個の値)を
返すことが期待されます。Perlの変数、関数、演算子などの中には、評価され
るコンテキストに応じて、スカラーコンテキストではスカラー値を、リストコ
ンテキストではリスト値を返すものがあります。(もちろん、ほとんどのもの
は、コンテキストとは無関係に、常に同じ値を返します)。
◇スカラーコンテキストの例――スカラー変数への代入
スカラー変数に対して代入を行なう場合、右辺はスカラーコンテキストで評価
されます。例えば、
$s = 10;
という式では、右辺に置かれている定数10はスカラーコンテキストで評価され
ます。もちろん、定数10は、どんなコンテキストで評価しても10という数値に
なりますから、$sには10がセットされることになります。
◇リストコンテキストの例――配列変数への代入
配列変数に対して代入を行なう場合、右辺はリストコンテキストで評価されま
す。なぜなら、配列変数には複数の値を格納できるので、リスト値(複数の値)
が要求されるからです。次の代入式をみてください。
@a = @b;
ここでは、代入演算子の左辺は配列変数@aなので、右辺はリストコンテキスト
で評価されます。配列変数@bをリストコンテキストで評価すると、配列@bの全
要素から成るリスト値が得られます。そして、そのリスト値が配列@aに代入さ
れます。つまり、配列@bの全要素がそのまま配列@aにコピーされることになり
ます。
◇スカラーコンテキストで配列変数を評価する
ところで、配列変数は、評価するコンテストによって異なる値を返すようなも
のの1つです。今度は、配列変数をスカラーコンテキストで評価してみましょ
う。次の代入式を見てください。
$s = @b;
ここでは、代入の対象となるのはスカラー変数$sなので、右辺にある配列変数
@bはスカラーコンテキストで評価されます。配列変数をスカラーコンテキスト
で評価すると、その配列の要素の個数が返されることになっています。ですか
ら、上の代入式によって、スカラー変数$sには、配列変数@bの要素の個数がセッ
トされることになります。
(次号に続く)
======================================================================
■■ 最近のトピックス
======================================================================
●Perl 5.5.650のリリース●
前号でPerl開発版のバージョン5.5.640がリリースされたことをお伝えしまし
たが、その直後(2月8日)にバージョン5.5.650がリリースされました。
【注意: 開発版(development version)は、次期バージョンに向け
た開発作業が行なわれるバージョンです。安定した動作は期待できな
いので、通常の運用に使うシステムには向きません。】
アナウンスによると、バージョン5.5.650は、Perlの次期バージョン5.6のリリー
スに向けての最初のベータ版ということになります。
▼Perl 5.5.650の入手先
◇5.5.650を新規に入手する
http://www.perl.com/CPAN/authors/id/GSAR/perl5.5.650.tar.gz
◇5.5.640から5.5.650へのパッチを入手する
http://www.perl.com/CPAN/authors/id/GSAR/perl5.5.650.patch.gz
▼Perl 5.5.650のリリースについて
(www.perl.com掲載の記事、英語)
http://www.perl.com/pub/n/Perl_5.5.650_released
▼Perl 5.5.650リリースのアナウンス記事 (perl5 porters MLより、英語)
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2000-02/msg00623.html
また、ActiveStateはActivePerl 5.6 betaを公開しています。これは、バー
ジョン5.5.650をベースにしたもので、Windows NT、Solaris、Linux用のバイ
ナリ、ソースが公開されています。
▼ActivePerl 5.6 beta公開のプレスリリース
http://www.activestate.com/press/releases/perl56.htm
▼ActivePerl 5.6 betaのダウンロード
http://www.activestate.com/cgibin/ActivePerl/download.pl
----------------------------------------------------------------------
●バージョン番号の付け方の変更について●
前号でも書きましたが、次期バージョンから、Perlのバージョン番号の付け方
が変更になります。その経緯を簡単に紹介しましょう。
Perlはバージョン5になってからは、5.000、5.001、5.002という具合に、バー
ジョン番号を0.001刻みで上げてきました。また、バグフィックスを行なった
場合は、バージョン番号はそのままで、さらに後ろにサフィックスを付けます。
5.001までは5.001mのようにアルファベット1文字を付けていました。5.002以
降は、5.002_01のように「下線+数字2ケタ」を付けるようになっています。
現在の安定版の最新バージョンは5.005_03で、これはバージョン5.005の3個目
のバグフィックス版です。Perlのバージョンの変遷については、perlhist(1)
マニュアルページに詳しくまとめられていますので、興味のある人はそちらを
参照してください。
さて、このような従来の方式は、バージョン番号の刻みが小さいために、
「0.001しか増えないのだから、単なるバグフィックスだろう」といった誤解
を与えがちでした。その結果、新しいバージョンが公開されても、バージョン
アップをしない人がかなりいたようです。しかし、実際には、バージョン番号
がたった0.001しか増えなくても、かなり機能が強加されているのです。
そこで、このような誤解を避けるために、従来の方式では5.006となるはずだっ
た次期バージョンは、思い切って5.6とすることになりました。また、バージョ
ン番号自体も、3つの数字の間にピリオドをはさんだものを使うことになりま
した。これは、Linuxカーネルなどでおなじみの方式です。
さて、現行のバージョン5.005_XXは、新しいバージョン番号の付け方に従えば、
5.5.XXということになります。また、開発版は5.005_63の次のバージョンから
新方式でバージョン番号を付けることになったために、
5.005_63 => 5.5.640 => 5.5.650
のようにバージョン番号が進むことになりました。(最後に0を付けるのは、
おそらく些細な修正を加えたバージョンのために、「余裕」を残しているのだ
と思われます。)
======================================================================
■■ 最新バージョン情報 2000年2月21日現在
======================================================================
このコーナーでは、Perl処理系とユーティリティの最新バージョンと
その入手先を紹介します。
行頭に?が付いてる部分は、今回更新された情報です。
行頭に+が付いている部分は新規に追加された情報です。
----------------------------------------------------------------------
●perl●
現在、perlは安定版(stable version)と開発版(development version)
の2つのブランチに枝分かれして開発が行なわれています。
安定版(stable version)は安定した動作を最大の目的としているバージョ
ンです。原則として新たな機能の追加は行なわずに、バグの修正のみが行な
われます。特に理由のない限り、安定版を使用するのがよいでしょう。
開発版(development version)は、次期バージョンのベースとなるもので、
どんどん新しい機能が追加されます。実験的(experimental)なバージョン
とされており、動作の安定性は期待できません。
◇perl安定版(stable version)
最新バージョンは5.005_03です。
▼perl 5.005_03の入手先
http://www.perl.com/CPAN/src/stable.tar.gz
? ◇perl開発版(development version)
? 最新バージョンは5.5.650です(2000年2月8日リリース)
? なおこのバージョンは、Perl 5.6へ向けての最初のベータ版です。
?
? ▼perl 5.5.650の入手先
? http://www.perl.com/CPAN/authors/id/GSAR/perl5.5.650.tar.gz
●jperl●
jperlは、perlを日本語対応にするためのパッチです。最新バージョンは
jperl5.005_03-990822.pat.gzです。
▼jperl5.005_03-990822.pat.gzの入手先
http://www.perl.com/CPAN/authors/Hirofumi_Watanabe/jperl5.005_03-990822.pat.gz
●Windows版●
◇ActivePerl
ActivePerlは、ActiveStateによるWin32(Windows 95/98/NT)用の
perlです。フリーで入手できます。最新バージョンはBuild 522で、
5.005_03をベースにしています。バイナリ(とソース)が配布されて
います。
▼ActivePerl Build 522の入手先
http://www.activestate.com/ActivePerl/download.htm
▼ActiveState
http://www.activestate.com/
+ ActiveStateは、バージョン5.5.650をベースにした、ActivePerl 5.6
+ betaを公開しています。(Windows NTのみ。95/98は未サポート。開
+ 発版なので、動作の安定は期待できません。)
+
+ ▼ActivePerl 5.6 betaの入手先
+ http://www.activestate.com/cgibin/ActivePerl/download.pl
◇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のベータ版である5.5.650が公開されました。
次号からは、Perl5.6(次期バージョン)の新機能について紹介していく
予定です。
▼今回は「関数・モジュールWho's Who」は休ませていただきました。
▼第4号は、3月7日発行の予定です。
近藤 嘉雪 (cond@context.co.jp)
======================================================================
Perlニュースレター 第3号 (2000年2月23日発行)
主筆:-) 近藤 嘉雪
発行元 有限会社コンテキスト(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ニュースレター」に掲載された記事を許可なく転載することを禁じます。
======================================================================
|
|||||