コンテキストのホームへ ホーム > Perlニュースレター > バックナンバー > 第3号

ホーム

Perlニュースレター

Perl情報メモ

会社情報

トレーニングコース

!!速報!!
「プログラミング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ニュースレター」に掲載された記事を許可なく転載することを禁じます。
======================================================================
ご質問・お問い合わせはperlnews@context.co.jpまで
Copyright (C) 2001 Context, Inc. All rights reserved.