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{}を使うことだが,それではグローバル変数$@をクリアしてしまうし,それにしてもそう速いわけではない。
過去の記録: