>>26
> ourってuse strict "vars"で怒られなくするという以上の意味は
> ないよ。
まさに our 宣言がそれしかしない、つまり新しい変数を作るわけではない、という点が問題だと思うのでつ。
our $x と宣言したレキシカルスコープ内で、$x の実体はあくまで $Hoge::x でつ。
$Hoge::x をスコープ外から他人が触らない保障はないのでつA`;)。
(この意味で「筒抜け」と表現した。)

use strict;

package Hoge;

$Hoge::x = "This is a pen.";

sub foo() {
  our $x;
#  local $x;  # <-- ここで local しないと、、、
  print "(foo) $x\n";
}


package main;

foo();  # "(foo) This is a pen.
$Hoge::x = "Hello World!\n";
foo();  # "(foo) Hello World" と表示される。(筒抜け)