2011/11/03

use VERSION and use feature

use VERSION and use feature

そろそろ新しいperlを使えそうなので、確認しておく。

use $VERSION

    use v5.14;

これは以下のことが起きる

  • compile time version check
  • use feature ':VERSION' if VERSION >= 5.9.5
  • use strict if VERSION >= 5.11.0

VERSIONの互換性を気にするときは以下のように書けばいいんでないでしょうか。

    use v5.14.2;
    use 5.014_002; # for backwards compatibility. see `perldoc version`

use feature

perl-5.14.2の時点で以下の4つがある

  • say
  • state
  • switch
  • unicode_strings

それぞれの機能は以下のようにしてimportできる

    use feature qw(say);

面倒なので、まとめてimportできる以下のbundleが存在する。

bundle|features
------------------------------------------
:5.10 |switch, say, state
:5.11 |switch, say, state, unicode_strings
:5.12 |switch, say, state, unicode_strings
:5.13 |switch, say, state, unicode_strings
:5.14 |switch, say, state, unicode_strings

bundleは以下のように指定する。

use feature ':5.10';

bundle指定で':5.10.x'と書いた場合、xはなかったものとして扱われる。
また、もう使うことはないだろうが、特別なbundleとして':5.9.5'が存在し、':5.10'として扱われる。

the ’unicode_strings’ feature

5.13.8から完全にサポートされて、Unicode関わるバグ(文字列のappend時の挙動とか)を治してくれる模様。
詳しくはperldoc featureperldoc perlunicodeのThe "Unicode Bug"を参照。

perldoc featureにも以下のようにあるので、新規に書く場合は使ったほうがいいのではないでしょうか。

if you are potentially using Unicode in your program,
the "use feature 'unicode_strings'" subpragma is strongly recommended.

0 件のコメント:

コメントを投稿