1. Perl
  2. バージョン情報
  3. here

Perl 5.20がリリース - ipv6のサポート、サブルーチンの新しい文法、新しいスライス記法、Unicode 6.3への対応など

Perl 5.20がリリースされました。今回は結構盛りだくさん。ピックアップして紹介します。

Perl 5.20で追加・変更された機能

IO::Socket::IPがコアモジュールに

Perl 5.20ではIO::Socket::IPがコアモジュールになりました。Perlではソケットを使う場合にIO::Socket::INETを使っていましたが、ipv6のサポートを含めて、同一のインターフェースで利用できるモジュールのようです。

CGI,Module::Buildが廃止予定になります

長年コアモジュールだったCGIモジュールが、次期リリースでコアからはずれます。。また、ピュアPerlでmake相当のことができるModule::Buildが次期リリースでコアからはずれます。

次期リリースのPerl 5.22からは、CGIモジュールは必要であればcpanからインストールする必要があります。Module::Buildについては、必要であれば、自動的にインストールされるので、特に問題がないようです。

サブルーチンシグネチャ

サブルーチンシグネチャが実験的に追加されました。Perlで普通の引数がかける機能です。まだ実験段階なので、使用すると警告がでます。

use feature 'signatures';

sub foo ($x, $y) {
  ...
}

詳しくはPerl 5.20でサブルーチンシグネチャが実験的に導入されるをご覧ください。

これに伴って従来のプロトタイプを書く場合は、prototypeアトリビュートが使えるようになりました。

sub foo : prototype($$) {
  ...
}

この機能は、とてもよいので、早い段階で、警告が消えたらいいなと思います。

配列スライス、ハッシュスライスの新しい記法

配列スライス、ハッシュスライスが、新しい記法で書けるようになりました。

use feature 'postderef';

# 配列スライス
my ($title, $author) = $array_ref->@[0, 1];

# ハッシュスライス
my ($title, $author) = $hash_ref->@{'title', 'author'};

「$aref->@*」という記法も追加されましたけれど、個人的には「$aref->@*」記法はいらないんじゃないかなと思った。全体をとりたいのであれば「@$aref」ができれば十分じゃないかなぁ。

スライス記法は、わかりやすくて便利だけどね。

新しいスライス「インデックス/値 スライス」と「キー/値 スライス」と

配列でインデックスを指定すると、「インデックスと値」の組が取得できる「インデックス/値 スライス」が追加されました。

my @array = (1, 3, 5);

# (0 => 1, 1 => 3)
my %index_values = %array[0, 1];

ハッシュでキーを指定すると、「キーと値」の組が取得できる「キー/値 スライス」が追加されました。

my %hash = (a => 1, b => 2, c => 3);

# (a => 1, b => 2);
my %key_values = %hash{'a', 'b'};

便利だけれど、慣れないとちょっと読みづらいか。

文字列コピーの性能の改善

文字列をコピーするときに、コピーオンライトが効くようになりました。参照するだけの場合は、大きな文字列であっても、コピーが非常に速くなり、スカラのリファレンスを利用する必要がなくなります。

ithreadが非推奨になりました

ithreadが公式に非推奨になりました。ithreadは、イメージからすると、マルチタスクのための高速で軽量なスレッドと感じられますが、実際はそんなことはなく、非常に使いにくく、重いものです。

歴史的にはおそらく、Windowsでforkをエミュレートするために実装されたように思いますが、ユーザーが利用するには、非常に誤解や困難が伴っていましたので、非推奨とマークされるのは、よいことだと思います。

その他の細かな変更

  • Unicode 6.3 に対応
  • find2perl, s2p, a2pが廃止予定になりました。次期リリースのPerl 5.22からは利用する場合はcpanからインストールする必要があります。

業務に役立つPerl

Perlテキスト処理のエッセンス

PerlでポータブルなLinuxファイル管理入門

ITエンジニアの求人情報など

 ITエンジニアの求人情報・Webサービス・ソフトウェア・スクールなどの情報。

システム開発のお問い合わせ