feature-1.16 > feature

名前

feature - Perl pragma to enable new features

feature - 新しい機能を有効にするプラグマ

概要

    use feature qw(switch say);
    given ($foo) {
        when (1)          { say "\$foo == 1" }
        when ([2,3])      { say "\$foo == 2 || \$foo == 3" }
        when (/^a[bc]d$/) { say "\$foo eq 'abd' || \$foo eq 'acd'" }
        when ($_ > 100)   { say "\$foo > 100" }
        default           { say "None of the above" }
    }

    use feature ':5.10'; # loads all features available in perl 5.10

説明

It is usually impossible to add new syntax to Perl without breaking some existing programs. This pragma provides a way to minimize that risk. New syntactic constructs, or new semantic meanings to older constructs, can be enabled by use feature 'foo', and will be parsed only when the appropriate feature pragma is in scope.

既に存在しているプログラムを壊すことなく、Perl に新しい文法を追加することは、 普通は不可能です。 このプラグマは、リスクを最小化する方法を提供します。 新しい文法構造や、古い構造の新しい意味は、use feature 'foo' で有効化され、 適切な feature プラグマがスコープ内にある場合にのみパースされます。

レキシカルな効果

Like other pragmas (use strict, for example), features have a lexical effect. use feature qw(foo) will only make the feature "foo" available from that point to the end of the enclosing block.

(例えば use strict のような) その他のプラグマと同様、feature は レキシカルな効果を持ちます。 use feature qw(foo) は、この地点からブロックの終わりまでの間だけ、 "foo" 機能を利用可能にします。

    {
        use feature 'say';
        say "say is available here";
    }
    print "But not here.\n";

no feature

Features can also be turned off by using no feature "foo". This too has lexical effect.

機能は no feature "foo" を使うことで無効にすることも出来ます。 これもまたレキシカルな効果を持ちます。

    use feature 'say';
    say "say is available here";
    {
        no feature 'say';
        print "But not here.\n";
    }
    say "Yet it is here.";

no feature with no features specified will turn off all features.

no feature と、機能を指定せずに使うと、全ての機能が無効になります。

'switch' 機能

use feature 'switch' tells the compiler to enable the Perl 6 given/when construct.

use feature 'switch' は、コンパイラに Perl 6 given/when 構文を 有効にするように伝えます。

詳しくは "Switch statements" in perlsyn を参照してください。

'say' 機能

use feature 'say' tells the compiler to enable the Perl 6 say function.

use feature 'say' は、コンパイラに Perl 6 say 関数を有効にするように 伝えます。

See "say" in perlfunc for details.

詳しくは "say" in perlfunc を参照してください。

'state' 機能

use feature 'state' tells the compiler to enable state variables.

use feature 'state' は、コンパイラに state 変数を有効にするように 伝えます。

詳しくは "Persistent Private Variables" in perlsub を参照してください。

'unicode_strings' 機能

use feature 'unicode_strings' tells the compiler to treat all strings outside of use locale and use bytes as Unicode. It is available starting with Perl 5.11.3.

use feature 'unicode_strings' はコンパイラに、 use localeuse bytes の外側の全ての文字列を Unicode として 扱うように伝えます。 これは Perl 5.11.3 から利用可能です。

詳しくは "The "Unicode Bug"" in perlunicode を参照してください。

機能の束

It's possible to load a whole slew of features in one go, using a feature bundle. The name of a feature bundle is prefixed with a colon, to distinguish it from an actual feature. At present, the only feature bundle is use feature ":5.10" which is equivalent to use feature qw(switch say state).

大量の機能全体を 1 回で読み込むためには、機能の束 (feature bundle) が 使えます。 機能の束の名前には、実際の機能と区別するためにコロンが前置されます。 現在のところ、唯一の機能の束は use feature ":5.10" で、 use feature qw(switch say state) と等価です。

Specifying sub-versions such as the 0 in 5.10.0 in feature bundles has no effect: feature bundles are guaranteed to be the same for all sub-versions.

機能の束での 5.10.00 のような副バージョンを指定しても効果は ありません: 機能の束は全ての副バージョンに関して同じ事が保証されています。

暗黙の読み込み

There are two ways to load the feature pragma implicitly :

feature プラグマを暗黙に読み込むには二つの方法があります:

  • By using the -E switch on the command-line instead of -e. It enables all available features in the main compilation unit (that is, the one-liner.)

    コマンドラインで -e オプションの代わりに -E オプションを使います。 これにより、main コンパイル単位(つまり、1 行野郎)で全ての利用可能な機能が 有効になります。

  • By requiring explicitly a minimal Perl version number for your program, with the use VERSION construct, and when the version is higher than or equal to 5.10.0. That is,

    つまり、以下のようにすると:

        use 5.10.0;

    will do an implicit

    暗黙のうちに以下のように:

        use feature ':5.10';

    and so on. Note how the trailing sub-version is automatically stripped from the version.

    なるということです。 末尾の副バージョンは自動的にバージョンから取り除かれるようになったことに 注意してください。

    But to avoid portability warnings (see "use" in perlfunc), you may prefer:

    しかし移植性の警告("use" in perlfunc を参照してください)を避けるために、 以下のようにするのを好むかもしれません:

        use 5.010;

    with the same effect.

    これでも同じ効果が得られます。