Perlについての質問箱 17箱目
■ このスレッドは過去ログ倉庫に格納されています
0784デフォルトの名無しさん
2005/07/12(火) 21:14:47どういう動作をする代物なのかは既に理解しているようなので、
何故my $self = { やreturn {ではダメなのか、だけ。
#わかりやすくするため、簡略化する
my $var;
my $self = 'global self';
{
my $self = sub{ return \$self }
$var = $self;
}
print ${$var->()};
# => レキシカル変数$selfの値、無名サブルーチン"CODE(...)"が印字される
{
my $self = sub{ return \$self }
$var = $self;
}
print ${$var->()};
# => my .. ; の時点では、その変数のスコープは存在しない。
# よって*グローバル変数* $selfの値 "global self"が印字される
{
$var = sub{ return \$self };
}
print ${$var->()};
# 上と同じく、"global self"が印字される
■ このスレッドは過去ログ倉庫に格納されています