Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. バージョン情報
  3. here

Perlの最新バージョン5.16.0がリリースされました

2012年5月20日に待望のPerlの最新バージョンPerl 5.16.0がリリースされました。

[http://perl5.git.perl.org/perl.git/tag/refs/tags/v5.16.0:image=http://news.mynavi.jp/news/2011/03/02/009/images/001l.jpg]

First release of the v5.16 series!

1年に1回リリースするという方針が決まってからの3回目のリリースですね。Perlはスクリプト言語の中でも開発が活発なイメージがあります。Perl5のロゴは恐竜です。

新機能や変更点についてピックアップしました。Unicode6.1にほぼ対応、__SUB__の追加、デバッガの機能追加、use VERSIONの挙動の変更、パフォーマンスの改善、多くのバグフィックスがなされています。

これにともないPerl5.12シリーズはサポート対象外になりました。重大なセキュリティフィックスについてのみPerl5.12シリーズでも行われます。

Perl5.16における変更点

新機能

__SUB__

__FILE__や__PACKAGE__に似た、__SUB__という記述が可能になりました。これは現在実行しているサブルーチンの参照を取得できる機能で、再帰的なサブルーチンが書きやすくなります。use 5.16あるいはuse feature 'current_sub'の状態で利用することができます。

sub func {
  
  __SUB__->();
}

デバッガにおけるenableとdisableの追加

ブレークポイントを有効にしたり、無効にしたりすることができるようになりました。

デバッガにおけるブレークポイント設定でファイル名指定

bコマンド(ブレークポイントの指定)で行番号に加えて、ファイル名を指定できるようになりました。

b [file]:[line] 

これで、ファイルをいったりきたりする作業が減るかもしれませんね。

多くの Perl キーワードが CORE 名前空間で利用可能になった

今までは COREというのは実は名前空間ではなかったのですが、 COREが名前空間になり、通常の名前空間と同様の扱いができるような感じになったようです。

Core::tie

修正のタイプマップの提供

T_AVREF_REFCOUNT_FIXED などの追加の typemap が提供されるようになりました。これはXSでのお話です。

HV*   T_HVREF_REFCOUNT_FIXED

Unicode 6.1へほぼ対応

Unicode6.1へほぼ対応しました。Unicode6.0とUnicode6.1には、完全な互換性がないことに注意してください。

Unicode6といえば、顔文字が文字として含まれたことが特徴的ですね。携帯電話のメールをごにょごにょするアプリケーションはもしかしたら作りやすくなるのかなぁ。

細かな変更点

use VERSIONはそのPerlのバージョンでの動きを期待するものになった

「use v5.16」という記述は、Perl5.16の動作を期待するものになりました。

use v5.16;

つまり、「use v5.14」はPerl 5.14の動きを期待し、「use v5.16」はPerl 5.16の動きを期待するものになりました。

$[ は use v5.16 の元では無効になるようになりました。

$[はuse v5.16の元では無効になるようになりました。

正規表現の名前付キャプチャのメモリリークの修正

以下のコードのメモリリークが修正されました。これはPerl5.10からずっと存在していたものでした。

    for (1..10_000_000) {
        if ("foo" =~ /(foo|(?<capture>bar))?/) {
            my $capture = $+{capture}
        }
    }
    system "ps -o rss $$"'

これで名前つきキャプチャが、デーモンプロセスで使えるようになったかな。

非推奨

lib/unicore にある Unicode データベースファイルは読み込まないようになりました。これは、Perlのコアを小さくするためです。Unicode::UCDの新しい関数を代わりに使ってください。

非推奨のモジュール

  • Version::Requirements

Version::Requirementsは非推奨となりました。CPAN::Meta::Requirementsを使ってください。

将来の非推奨モジュール

以下のモジュールは将来非推奨になる予定です。非推奨になってしばらくすれば、とりのぞかれると思います。ただし、CPANではそのまま利用可能なので、利用している場合は、インストールする手間が増えることになります。

  • CPANPLUS
  • Filter::Simple
  • PerlIO::mmap
  • Pod::LaTeX
  • Pod::Parser
  • SelfLoader
  • Text::Soundex
  • Thread.pm

不必要なモジュールを取り除いて少しづつコアが小さくなっていくのかもしれません。

削除されたモジュールとプラグマ

以下のモジュールはコアから削除されました。CPANにはあります。

  • Devel::DProf
  • Shell

以下のPerl4形式のライブラリは削除されました。

abbrev.pl assert.pl bigfloat.pl bigint.pl bigrat.pl cacheout.pl complete.pl ctime.pl dotsh.pl exceptions.pl fastcwd.pl flush.pl getcwd.pl getopt.pl getopts.pl hostname.pl importenv.pl lib/find{,depth}.pl look.pl newgetopt.pl open2.pl open3.pl pwd.pl shellwords.pl stat.pl tainted.pl termcap.pl timelocal.pl

これらは CPAN の Perl4::CoreLibs にあります。

  • Perlとはテキスト処理の記述性とパフォーマンスに優れ、正規表現が言語に組み込まれているプログラミング言語です。
  • Linuxサーバーでのフィルタリングプログラム、複数行の文字列を処理、ファイル内容の検索・置換などが得意
  • Perlはgitopensslなど広く普及したUnix/Linuxミドルウェアの補助ツールとして採用実績あり。後方互換性とポータビリティの高さがひとつの理由と推測。
  • 大量のテキストを扱うWeb開発も得意。ロングテールSEOを意識したWebサイト、アドテクやソーシャルゲームでの50ms以内のJSONの生成など。