 |
ホーム
Perlニュースレター
Perl情報メモ
会社情報
トレーニングコース
!!速報!!
「プログラミングPerl第3版」が発売されました。
この機会にぜひお求めください。
詳しくは
こちらをクリック
|
 |
|
 |
Perlニュースレター 第4号 (2000年3月9日)
----------------------------------------------------------------------
Perlニュースレター 第4号 (2000年3月9日発行)
http://www.context.co.jp/perlnews/ 発行部数 2625部
----------------------------------------------------------------------
▼このメールはお申し込みいただいたアドレス(cond@context.co.jp)
に無料でお届けしているものです。
▼以下のページで配送中止の手続きができます。
http://www.context.co.jp/perlnews/
======================================================================
◆◆ 目 次 ◆◆
◇ 初心者コーナー
スカラーコンテキストとリストコンテキスト(2)
◇ Perl 5.6の新機能 (1)
◇ 最近のトピックス
* Perl 5.5.670のリリース
◇ 最新バージョン情報
◇ インフォメーション
◇ 編集後記
======================================================================
■■ 初心者コーナー
======================================================================
このコーナーでは、Perlを学び始めたばかりの人を対象に、基本とな
るポイントを解説します。
前回に引き続き、コンテキストという概念について解説します。
----------------------------------------------------------------------
◇スカラー値をリストコンテキストで評価する
スカラー値を、リストコンテキストに置くと、そのスカラー値だけを要素とす
る(1要素の)リスト値として扱われます。例えば、次のように配列変数@aに
対して、10という値を代入すると、配列@aは1個の要素10を持つようになりま
す。
@a = 10;
◇コンテキストに応じて異なる値を返す関数/演算子
前回は、スカラーコンテキストとリストコンテキストで異なる値を返すような
ものとして、配列変数名を紹介しました。配列変数名をリストコンテキストで
評価するとその配列の全要素が得られ、スカラーコンテキストで評価するとそ
の配列の要素数が得られます。
@a = @b; # リストコンテキスト: @bの内容が@aにコピーされる
$a = @b; # スカラーコンテキスト: @bの要素数が$aにセットされる
このほかにも、コンテキストに応じて別の値を返すような組み込み関数や演算
子がたくさんあります。やっかいなことに、スカラーコンテキストで返す値と
リストコンテキストで返す値の間には、特にこれといった規則性がありません。
つまり、コンテキストに応じてどのような値を返すかは、関数/演算子によっ
てまちまちなのです。ですから、各関数/演算子について、コンテキストによっ
てどんな値が返されるかを覚える必要があります。
実際には、このような関数/演算子は、各コンテキストにおいて「もっとも使
いやすい値」を返すので、ある程度Perlに慣れてしまえばあまり気にならない
でしょう。このような関数や演算子については、ドキュメントにそれぞれのコ
ンテキストで返す値が明記されています。
◇入力演算子<>
入力演算子<>はコンテキストによって異なる値を返します。入力演算子は、ス
カラーコンテキストでは次の1行を読み込んで返しますが、リストコンテキス
トでは残りのすべてのデータを読み込んで、それをリスト値として返します。
このリスト値は、ファイルの1つ1つの行が要素になっています。例えば、
open(FILE, "my-data") or die "$!: my-data\n";
@a = ;
close(FILE);
というコードによって、ファイルmy-dataの中身すべてが読み込まれ、1行が1
個の要素として配列変数@aにセットされます。
◇組み込み関数とリストコンテキスト
組み込み関数の引数のうち、特定のものはリストコンテキストで評価されます。
ドキュメント――perlfunc(1)マニュアルページ(UNIXではman perlfuncで見
ることができます)、「プログラミングPerl」の第3章など――でLISTという
名前を持っているパラメータは、リストコンテキストで評価されます。また、
このLISTというパラメータは、それ以降に置かれているすべての引数を受け取
ります。(ですから、パラメータLISTを持つ関数は、可変個の引数を受け取る
ことになります。)
例えば、push関数の呼び出し法は次のように定義されています。
push ARRAY, LIST
push関数は、配列ARRAYの末尾に、リスト値LISTを追加します。この関数を、
push(@a, 1, 2, 3);
のように呼び出すと、@aがパラメータARRAYに対応し、1, 2, 3という3つの値
を持つリスト値がLISTに対応します。つまり、1, 2, 3という3つの値が、配列
@aの末尾に追加されます。
また、push関数を
push(@a, @x);
のように呼び出した場合には、配列変数名@xがパラメータLISTに当たります。
したがって、@xはリストコンテキストで評価され、配列@aの末尾に、配列@xの
全要素が追加されることになります。
このほかに、ユーザが定義したサブルーチン(単に関数と呼ぶこともあります)
に渡される引数は、(原則として)すべてリストコンテキストで評価されます。
◇強制的にスカラーコンテキストを適用する
print関数の呼び出し法は
print LIST
のようになっているので、引数はすべてリストコンテキストで評価されます。
そのため、配列@aの要素の個数を表示しようとして、次のようにしてもうまく
いきません。
print "Array \@a has ", @a, " elements.\n";
なぜなら、@aはリストコンテキストで評価されるので、配列@aのすべての要素
が(間にスペースを空けずに)表示されてしまうのです。
配列@aの要素の個数を得るには、@aをスカラーコンテキストで評価する必要が
あります。scalar関数を使えば、リストコンテキストの中でも強制的にスカラー
コンテキストを適用することができます。scalar関数は1個の引数を受け取り、
その引数をスカラーコンテキストで評価して得られた値を返します。ですから、
上のコードを書き換えて
print "Array \@a has ", scalar(@a), " elements.\n";
のようにすれば、配列@aの要素の個数が表示されるようになります。
======================================================================
■■ Perl 5.6の新機能 (1)
======================================================================
ベータバージョンも公開され、いよいよPerl 5.6のリリースも近づい
てきました。
このコーナーでは、Perl 5.6で新たに導入される機能を紹介します。
----------------------------------------------------------------------
バージョン5.6では、多くの機能が新たに導入されます。現行バージョン5.005
からの具体的な変更点は、最新ベータ版5.5.670の中のperldelta.podに記述さ
れています。変更点はかなり多岐にわたるもので、perldelta.podをマニュア
ルページに変換すると、48ページにもなります。
今回は、変更点のうち主なものを簡単に紹介します。次回からは、各機能につ
いて、より詳しく説明していきます。
◇特別なサブルーチンCHECK
CHECKという名前を持つサブルーチンは、スクリプトのコンパイルが完了し
た直後に実行されます。
◇バージョン番号の付け方の変更
前号(第3号)で紹介したように、バージョン番号は5.6.0のような形式にな
ります。
◇UnicodeとUTF-8のサポート
UTF-8エンコーディングによるUnicode文字列を扱えるようになりました。私
たち日本語ユーザにとっては、これが最も大きな変更点だと言えるでしょう。
◇複数のインタープリタを独立したスレッドで実行する(実験的機能)
perl_clone() APIによって、インタープリタの複製を生成して別スレッドで
実行することができます。このようにして生成されたインタープリタは、
(明示的に共有するように宣言したものを除き)データを共有しません。そ
のため、ロックを行なう必要が(ほとんど)なくなり、マルチスレッドプロ
グラミングが容易になります。
◇レキシカルスコープによって警告メッセージを制御できるようになった
use warningsプラグマによって、ブロックに対して警告メッセージの出力の
有無を設定できるようになりました。また、カテゴリ(例えば、正規表現、
IO、未初期化など)ごとに警告メッセージを出力するかどうかを指定できま
す。
◇Lvalueサブルーチン(実験的機能)
左辺値を返す関数を定義できるようになりました。このような関数は、代入
式の左辺に置いたり、オートインクリメント演算子のオペランドとして使う
ことができます。
◇our関数
our関数は、グローバル変数を、レキシカル変数のように、パッケージ名の
指定なしで使用できるようにします。
◇v1.2.3.4のような文字列のサポート
v1.2.3.4のように、先頭にvを置き、その後ろにピリオドをはさんで数値を
並べたものは、それらの数値を文字コードとする文字を並べた文字列と解釈
されます。例えば、v65.66.67は"ABC"と同じ意味になります。これは、Perl
の新しいバージョン番号(v5.6.1など)を扱うのに便利です。また、
Unicode文字をコードによって指定するのにも使用します。
◇弱いリファレンス(実験的機能)
弱いリファレンス(weak reference)とは、リファレンスカウンタを増加さ
せない特殊なリファレンスです。あるオブジェクトに対する(通常の)リファ
レンスが無くなった時点で、弱いリファレンスが残っていても、そのオブジェ
クトは破棄されます。
◇2進定数のサポート
2進数の定数を記述できるようになりました。2進数は、0bで始まります。
$x = 0b11110101; # 16進数の0xf5, 10進数の245
◇リファレンスに対する関数呼び出しで->を省略できる
例えば、$foo[10]->('foo') は $foo[10]('foo') と書くことができます。
◇サブルーチン名に対してexists()が使えるようになった
exists関数を使って、あるサブルーチンが定義されているかどうかをチェッ
クできるようになりました。
◇配列の要素に対してexists()とdelete()が使えるようになった
◇64ビット整数のサポート
◇2Gバイトよりも大きなファイルのサポート
◇long double(精度の高い浮動小数点数)のサポート
◇pack/unpackの機能が強化された
型指定文字として、Z(ヌル文字で終了する文字列を扱う)、!(ネーティブ
形式のshort、int、long)、/(個数の指定)が追加されました。また、テ
ンプレートの中にコメントを入れることができます。
◇サブルーチンの属性定義
従来は、サブルーチンの属性を定義するのにuse attrを使いました。バージョ
ン5.6では、subによってサブルーチンを定義する際に属性を指定できるよう
になりました。
◇正規表現の強化
正規表現の機能が大幅に強化されました。正規表現の中にPerlのコードを埋
め込めるようになりました。この機能を利用すれば、トークンの対(対応す
るカッコ、対応するXMLタグなど)にマッチする正規表現を書くことができ
ます。
◇オーバーロード機能の強化
======================================================================
■■ 最近のトピックス
======================================================================
●Perl 5.5.670のリリース●
前号(第3号)でPerl開発版のバージョン5.5.650がリリースされたことをお伝
えしましたが、その後2月22日にバージョン5.5.660が、3月1日にバージョン
5.5.670がリリースされました。
【注意: 開発版(development version)は、次期バージョンに向け
た開発作業が行なわれるバージョンです。安定した動作は期待できな
いので、通常の運用に使うシステムには向きません。】
バージョン5.5.670は、Perlの次期バージョン5.6のリリースに向けての3番目
のベータ版です。
▼Perl 5.5.670の入手先
◇5.5.670を新規に入手する
ftp://ftp.linux.activestate.com/pub/staff/gsar/APC/5.5.670/perl-5.5.670.tar.gz
◇5.5.660から5.5.670へのパッチを入手する
ftp://ftp.linux.activestate.com/pub/staff/gsar/APC/5.5.670/perl-5.5.670.patch.gz
▼Perl 5.5.670のリリースについて
(www.perl.com掲載の記事、英語)
http://www.perl.com/pub/n/Perl_5.5.670_officially_announced
▼Perl 5.5.670リリースのアナウンス記事 (perl5 porters MLより、英語)
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2000-03/msg00082.html
また、ActiveStateは、バージョン5.5.670をベースにした、ActivePerl 5.6
beta 2を公開しました。Windows NT、Solaris、Linux用のバイナリ、ソースが
公開されています。
▼ActivePerl 5.6 beta 2の入手先
http://www.activestate.com/cgibin/ActivePerl/download.pl
======================================================================
■■ 最新バージョン情報 2000年3月7日現在
======================================================================
このコーナーでは、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.670です(2000年3月1日リリース)
? なおこのバージョンは、Perl 5.6へ向けての3番目のベータ版です。
?
? ▼perl 5.5.670の入手先
? ftp://ftp.linux.activestate.com/pub/staff/gsar/APC/5.5.670/perl-5.5.670.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.670をベースにした、ActivePerl 5.6
? beta 2を公開しています。(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/
======================================================================
■■ インフォメーション
======================================================================
●Kansai.pm 設立記念セミナーの開催のお知らせ
現在、有志により関西のPerl Mongers、Kansai.pmの設立準備をしています。
きたる 3月19日(日)にKansai.pm主催のPerlに関する無料セミナーと、
懇親会を開催する予定です。皆様お誘いあわせのうえ、是非おこしください。
主催: Kansai Perl Mongers
日時: 2000年03月19日(日)
会場: 江坂東洋ビル19F セミナールーム (東洋情報システム 本社ビル)
申込方法:
Kansai.pm設立準備ML( kansai-perl-pre@nara.feedmania.org )に、
参加して、末尾に添付するフォームで申し込むか、
ひい爺さんの遺言で「MLには入るな」と言われたその他の理由で
*どうしてもMLに入れない*場合は、kikawa@osa.att.ne.jp
に同様のものを送ってください。
申込締切: 3月17日(金)まで
Perl Mongersについて詳しくは http://www.pm.org をご覧ください。
Kansai.pm と準備MLについては、準備中のページですが
http://www-karc.crl.go.jp/synsophy/fukuhara/kansai_pm/
をごらんください。詳しいセミナー内容についても上記参照
======================================================================
■■ 編集後記
----------------------------------------------------------------------
▼発行が当初の予定日(3月7日)より遅れたことをお詫びいたします。
▼次号からは、Perl5.6の個々の新機能について紹介していく予定です。
▼第5号は、3月21日発行の予定です。
近藤 嘉雪 (cond@context.co.jp)
======================================================================
Perlニュースレター 第4号 (2000年3月9日発行)
主筆:-) 近藤 嘉雪
発行元 有限会社コンテキスト(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ニュースレター」に掲載された記事を許可なく転載することを禁じます。
======================================================================
|
 |