Perl言語の変数のスコープには,myとourとlocalの3つがあります。
My
基本的に変数のスコープには my を使用します。他言語で言えば、myはブロック内のローカル変数のように振舞います。ブロックを抜けると、宣言した変数のスコープが終了します。スコープから抜けるまで、他の関数やブロックから見ることができません。
Local
local はダイナミックスコープを持つことです。サブルーチンのスコープ内だけでは有効で、localを宣言したサブルーチンから呼び出して他のサブルーチンで共有することもできます。
Our
our はレキシカルスコープを持つことです。スコープを抜けて、もう一度同じスコープに入ってきたときに、前の値を保持しています。また、ourはパッケージ名前空間で共有することもできます。
use strict; use warnings;
一時的な便利で、変数をグローバルにして使いました。グローバル変数は簡単に共有することは便利でしたが、バグになる可能性が高いです。数千サブルーチンの中で、重複して使ってる変数が他のサブルーチンから影響を受けるようなことはよくないことです。問題が起こったときにどこをどう直せばよいか、どこから変数が変わったか、わかりづらくなります。というわけで、今後スクリプトを書く時にはグローバル変数の問題を忘れないように変数をしかっり局所化します。 use strict; use warnings;もそのために使っています。
0 留言:
發佈留言