これはMoritz Lenz氏のWebサイト Perlgeek.de で公開されているブログ記事 "Perl 5 to 6" Lesson 18 - Scoping の日本語訳です。   原文は Creative Commons Attribution 3.0 Germany に基づいて公開されています。   本エントリには Creative Commons Attribution 3.0 Unported を適用します。   Original text: Copyright© 2008-2010 Moritz Lenz   Japanese translation: Copyright© 2011 SATOH Koichi   NAME   "Perl 5 to 6" Lesson 18 - Scoping   SYNOPSIS   for 1 .. 10 -> $a {     # ここは$aが見える } # ここは$aが見えない  while my $b = get_stuff() {     # ここは$bが見える } # ここでも$bが見える  my $c = 5; {     my $c = $c;     # ここで$cがundefになる } # ここでは$cは5  my $y; my $x = $y + 2 while $y = calc(); # まだ$xが見える   DESCRIPTION   字句的スコープ   Perl6のスコープはPerl5に非常によく似ています。ブロックは新しい字句的スコープを導入します。 変数名は最も内側の字句的スコープから探索され、もし見つからなければ一つ外側のスコープを、といった手順で探索されます。 Perl5と同様に my 変数は完全な字句的スコープ変数であり、 our 宣言はパッケージ変数に字句的スコープを持った別名を作ります。   ただしちょっとした違いがあります: 変数はブロックの宣言された位置より後で可視であり、ブロックのヘッダ(例えば while ループの条件節など)で宣言された変数はブロック内に限定されません。   スコープを限定したいときはブロックの形式的パラメータが使えます:   if calc() -> $result {     # ここでは$...