NAME

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

SYNOPSIS

    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

DESCRIPTION

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

レキシカルな効果

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

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

no feature

機能は 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 と、機能を指定せずに使うと、全ての機能が無効になります。

'switch' 機能

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

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

'say' 機能

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

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

'state' 機能

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

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

機能の束

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

来たるべき perl バージョン 5.10.X では、use feature ":5.10" は 最新の use feature ":5.10.X" と等価になります。

暗黙の読み込み

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