Perlについての質問箱 17箱目
■ このスレッドは過去ログ倉庫に格納されています
002722
2005/06/07(火) 12:55:39> 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" と表示される。(筒抜け)
■ このスレッドは過去ログ倉庫に格納されています