- my VARLIST
- my TYPE VARLIST
- my VARLIST : ATTRS
- my TYPE VARLIST : ATTRS
-
A my declares the listed variables to be local (lexically) to the enclosing block, file, or eval. If more than one variable is listed, the list must be placed in parentheses.
my はリストアップされた変数を、囲っているブロック、ファイル、 eval の中でローカルな (レキシカルな) ものにします。 複数の変数を指定する場合は、リストはかっこで囲まなければなりません。
Note that with a parenthesised list, undef can be used as a dummy placeholder, for example to skip assignment of initial values:
かっこで囲まれたリストでは、undef は、例えば初期値の代入を 飛ばすために、ダミーのプレースホルダとして使えることに注意してください:
my ( undef, $min, $hour ) = localtime;
Like state, local, and our, my can operate on a variable anywhere it appears in an expression (aside from interpolation in strings). The declaration will not apply to additional uses of the same variable until the next statement. This means additional uses of that variable within the same statement will act as they would have before that declaration occurred, or result in a strict 'vars' error, as appropriate.
state、local、および ourと同様に、myは、(文字列内の 補間を除いて)式に現れる任意の場所で変数を操作できます。 この宣言は、次のステートメントまで同じ変数の追加使用には適用されません。 つまり、同じステートメント内でその変数を追加使用すると、 その宣言が発生する前と同じように動作するか、厳密な'vars'エラーが発生します。 (TBR)
package main; our $x = 2; foo($x, my $x = $x + 1, $x); # foo() receives (2, 3, 2) foo($x, $main::x); # foo() receives (3, 2)
Redeclaring a variable in the same scope or statement will "shadow" the previous declaration, creating a new instance and preventing access to the previous one. This is usually undesired and, if warnings are enabled, will result in a warning in the
shadow
category.同じスコープや文で変数を再宣言すると、以前の宣言を「隠し」、 新しい実体を作って、以前の実体にアクセスできなくなります。 これは普通は望まれているものではなく、警告が有効なら、
shadow
カテゴリの警告が出ます。The exact semantics and interface of TYPE and ATTRS are still evolving. TYPE may be a bareword, a constant declared with
use constant
, or __PACKAGE__. It is currently bound to the use of the fields pragma, and attributes are handled using the attributes pragma, or starting from Perl 5.8.0 also via the Attribute::Handlers module. See "Private Variables via my()" in perlsub for details.TYPE と ATTRS の正確な文法とインターフェースは今でも進化しています。 TYPE は、裸の単語、
use constant
で宣言された定数、 __PACKAGE__ のいずれかです。 現在のところ、TYPE は fields プラグマの使用と結び付けられていて、 属性は attributes プラグマか、Perl 5.8.0 からは Attribute::Handlers モジュールと結び付けられています。 詳しくは "Private Variables via my()" in perlsub を参照してください。