Perl Hackers Hub
第62回 Perl歴史散策 ―インタプリタの実装と,構文の進化をたどる(2)
前回の
Perl 2. 0── より 「らしく」 なったレガシーPerl
1988年6月に,perl-2.
です。Perl 2.
- 拡張正規表現
*+
,(foo|bar)
,文字クラス \s
,\d
などの追加 local
変数の追加foreach
の追加- Perlスクリプトの拡張子が
pl
として定義され,do foo. pl
でスクリプト中にロードが可能に - いくつかのPerl製のモジュールの初期実装が登場
Perl 5では変数宣言の際にmy
,our
,local
の3種類のキーワードを利用しますが,local
が最初に登場しました。
リポジトリの構成
Perl 2.regexp.(c|h)
の追加や,yylex
がtoke.
に切り分けられたりなどの変更がありました。
また,eg
ディレクトリが登場します。ここには,du -s
を実行するdus
プログラムなどが含まれます。これらのスクリプトは,
現在のPerlモジュールの原型であるライブラリも,lib
ディレクトリの中にgetopt
,importenv
,stat
の3種類が入っています。パッケージ構文はまだ存在していなかったため,do subRoutine()
のように呼び出します。
正規表現の実装
Perl 2.regexp.
の冒頭には,
/* NOTE: this is derived from Henry Spencer's regexp code, and should not
* confused with the original package (see point 3 below). Thanks, Henry!
*/
ここに登場するHenry Spencerは,
Perl 2.
Perl 3. 0 ── Perl 5の原型
続いては,perl-3.
です。Perl 2.
- 連想配列が公式のデータ型に昇格
- バイナリ操作が可能な
pack
,unpack
の導入 - デバッガの強化
- サブルーチンの呼び出し方法が
do hoge()
から&hoge()
に変更 mkdir
,getpid
などのOSのAPIをPerlから利用できる関数の追加
サブルーチンの呼び出し以外にも,for
とforeach
が等価になったことなどのさまざまな変更がありました。Perl 3.
リポジトリの構成
Perl 3.regexp.
は,regcomp.
と処理を担当するregexec.
に分割されています。
manページを構成するファイルは4つに増加しました。Perl 3.eg
ディレクトリの内容を見るだけで,
Perl 4. 0── 広く使われだしたPerl
次は,perl-4.
です。
Perl 4.perl-4.
のタグが付けられているコミットメッセージは次のとおりです。
perl 4.0.00: (no release announcement available)
So far, 4.0 is still a beta test version. For the last production
version, look in pub/perl.3.0/kits@44.
アナウンスができない状態にもかかわらず,
その後,perl-4.
のバージョンでPerl 4として完成しました。これらのパッチでは,eval
関数の追加や,sort
関数の追加が行われています。
日本でもラクダ本などのPerlの書籍が多数出版されたこともあり,
- 注1)
- Larry Wall,
Tom Christiansen, Jon Orwant著/ 近藤嘉雪訳 『プログラミングPerl 第3版 VOLUME 1, 2』 オライリー・ ジャパン, 2002年
リポジトリの構成
Perl 4.emacs
,h2pl
,os2
,msdos
,usub
が追加されています。emacs
ディレクトリには,h2pl
ディレクトリには,os2
,msdos
ディレクトリには,usub
ディレクトリの内容は現在のXS
- 注2)
- C言語を用いてPerlを拡張できる言語です。
<続きの
本誌最新号をチェック!
WEB+DB PRESS Vol.122
2021年4月24日発売
B5判/168ページ
定価1,628円
(本体1,480円+税10%)
ISBN978-4-297-12119-8
- 特集1
上から下まで全レイヤ解説! 複雑化した世界を体系的に学ぶ
Web技術総整理 - 特集2
新バージョン登場! PythonによるWeb開発の基本
はじめてのDjango - 特集3
Rustで実装!
作って学ぶRDBMSのしくみ
バックナンバー
Perl Hackers Hub
- 第66回 モジュールによる時間の多様な取り扱い(2)
- 第66回 モジュールによる時間の多様な取り扱い(1)
- 第65回 依存モジュールの更新 ―update-cpanfile,GitHub Actionsで実現!(2)
- 第65回 依存モジュールの更新 ―update-cpanfile,GitHub Actionsで実現!(1)
- 第64回 少しマニアックなPerlのテクニック―特殊変数,低レベルの標準関数を使いこなす(2)
- 第64回 少しマニアックなPerlのテクニック―特殊変数,低レベルの標準関数を使いこなす(1)
- 第63回 PPIとPerl::Tidyを組み合わせて作るコード整形ツール(2)
- 第63回 PPIとPerl::Tidyを組み合わせて作るコード整形ツール(1)
- 第62回 Perl歴史散策 ―インタプリタの実装と,構文の進化をたどる(3)
- 第62回 Perl歴史散策 ―インタプリタの実装と,構文の進化をたどる(2)