Perl 5.11.4 features

Perl 5.11.4がリリースされた。

例によって修正をピックアップ:

  • UNIVERSALモジュールによるisa/canのインポートがdeprecatedになり,警告が出るようになった
  • versionのフォーマットが厳格に定められた。詳細は不明だが,package NAME VERSION 構文では"strict format"のみ受け付けるようだ。

大きな変更はこんなものか。UNIVERSAL.pmの変更により, "use UNIVERSAL qw(...)" を含む全てのコードが警告モードのもとで警告を出すようになる。そのようなコードを書き換える簡単な方法は,Try::Tinyのtry{}で囲むことだ。
レガシーコード:

use UNIVERSAL qw(can);
...
    if(UNIVERSAL::can($x, 'foo')){
        ...
    }

モダンコード:

use Try::Tiny qw(try);
...
    if(try{ $x->can('foo') }){
        ...
    }

しかし,この方法は非常に遅い。UNIVERSALのドキュメントで提案されている方法は生のeval{}を使うことだが,それではグローバル変数$@をクリアしてしまうし,それにしてもそう速いわけではない。

過去の記録: