=encoding euc-jp =head1 NAME =begin original feature - Perl pragma to enable new features =end original feature - 新しい機能を有効にするプラグマ =head1 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 =head1 DESCRIPTION =begin original 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 C, and will be parsed only when the appropriate feature pragma is in scope. =end original 既に存在しているプログラムを壊すことなく、Perl に新しい文法を追加することは、 普通は不可能です。 このプラグマは、リスクを最小化する方法を提供します。 新しい文法構造や、古い構造の新しい意味は、C で有効化され、 適切な feature プラグマがスコープ内にある場合にのみパースされます。 =head2 Lexical effect (レキシカルな効果) =begin original Like other pragmas (C, for example), features have a lexical effect. C will only make the feature "foo" available from that point to the end of the enclosing block. =end original (例えば C のような) その他のプラグマと同様、feature は レキシカルな効果を持ちます。 C は、この地点からブロックの終わりまでの間だけ、 "foo" 機能を利用可能にします。 { use feature 'say'; say "say is available here"; } print "But not here.\n"; =head2 C =begin original Features can also be turned off by using C. This too has lexical effect. =end original 機能は C を使うことで無効にすることも出来ます。 これもまたレキシカルな効果を持ちます。 use feature 'say'; say "say is available here"; { no feature 'say'; print "But not here.\n"; } say "Yet it is here."; =begin original C with no features specified will turn off all features. =end original C と、機能を指定せずに使うと、全ての機能が無効になります。 =head2 The 'switch' feature ('switch' 機能) =begin original C tells the compiler to enable the Perl 6 given/when construct. =end original C は、コンパイラに Perl 6 given/when 構文を 有効にするように伝えます。 =begin original See L for details. =end original 詳しくは L を参照してください。 =head2 The 'say' feature ('say' 機能) =begin original C tells the compiler to enable the Perl 6 C function. =end original C は、コンパイラに Perl 6 C 関数を有効にするように 伝えます。 =begin original See L for details. =end original 詳しくは L を参照してください。 =head2 the 'state' feature ('state' 機能) =begin original C tells the compiler to enable C variables. =end original C は、コンパイラに C 変数を有効にするように 伝えます。 =begin original See L for details. =end original 詳しくは L を参照してください。 =head2 the 'unicode_strings' feature ('unicode_strings' 機能) =begin original C tells the compiler to use Unicode semantics in all string operations executed within its scope (unless they are also within the scope of either C or C). The same applies to all regular expressions compiled within the scope, even if executed outside it. =end original C は、(C か C の スコープないでない限り) そのスコープ内で実行される全ての文字列操作に Unicode の意味論を使うようにコンパイラに伝えます。 =begin original C tells the compiler to use the traditional Perl semantics wherein the native character set semantics is used unless it is clear to Perl that Unicode is desired. This can lead to some surprises when the behavior suddenly changes. (See L for details.) For this reason, if you are potentially using Unicode in your program, the C subpragma is B recommended. =end original C は、Unicode が求められているのが Perl にとって明らかでない限り、ネイティブな文字集合意味論が使われるところで 伝統的な Perl の意味論を使うようにコンパイラに伝えます。 これは、振る舞いが突然変更されたときに驚きを引き起こすかもしれません。 (詳しくは L を参照してください。) この理由により、もしプログラムで Unicode を扱う可能性があるなら、 C 副プラグマを B<強く> 勧めます。 =begin original This subpragma is available starting with Perl 5.11.3, but was not fully implemented until 5.13.8. =end original この副プラグマは Perl 5.11.3 から利用可能になりましたが、 5.13.8 まで完全には実装されていませんでした。 =head1 FEATURE BUNDLES (機能の束) =begin original It's possible to load a whole slew of features in one go, using a I. 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 C which is equivalent to C. =end original 大量の機能全体を 1 回で読み込むためには、I<機能の束> (feature bundle) が 使えます。 機能の束の名前には、実際の機能と区別するためにコロンが前置されます。 現在のところ、唯一の機能の束は C で、 C と等価です。 =begin original Specifying sub-versions such as the C<0> in C<5.10.0> in feature bundles has no effect: feature bundles are guaranteed to be the same for all sub-versions. =end original 機能の束での C<5.10.0> の C<0> のような副バージョンを指定しても効果は ありません: 機能の束は全ての副バージョンに関して同じ事が保証されています。 =head1 IMPLICIT LOADING (暗黙の読み込み) =begin original There are two ways to load the C pragma implicitly : =end original C プラグマを暗黙に読み込むには二つの方法があります: =over 4 =item * =begin original By using the C<-E> switch on the command-line instead of C<-e>. It enables all available features in the main compilation unit (that is, the one-liner.) =end original コマンドラインで C<-e> オプションの代わりに C<-E> オプションを使います。 これにより、main コンパイル単位(つまり、1 行野郎)で全ての利用可能な機能が 有効になります。 =item * =begin original By requiring explicitly a minimal Perl version number for your program, with the C construct, and when the version is higher than or equal to 5.10.0. That is, =end original つまり、以下のようにすると: use 5.10.0; =begin original will do an implicit =end original 暗黙のうちに以下のように: use feature ':5.10'; =begin original and so on. Note how the trailing sub-version is automatically stripped from the version. =end original なるということです。 末尾の副バージョンは自動的にバージョンから取り除かれるようになったことに 注意してください。 =begin original But to avoid portability warnings (see L), you may prefer: =end original しかし移植性の警告(L を参照してください)を避けるために、 以下のようにするのを好むかもしれません: use 5.010; =begin original with the same effect. =end original これでも同じ効果が得られます。 =back =begin meta Translate: SHIRAKATA Kentaro Status: completed =end meta =cut