4.5 變數的範圍
若沒有特別宣告,您使用的變數為一全域變數,這並不是很好的習慣,有時這容易造成不良的影響,使程式變得不易偵錯。因此之故,Perl 提供一 my 的關鍵字,可讓您將某一變數變成區域變數,該區域變數的作用範圍限制在某一區塊中,如下例:
$a = "foo";
if ($some_condition) {
my $b = "bar"; # my 宣告 $b 為區域變數,只在 { } 才有效,只要離開區塊,$b 內容自動消失。
print $a; # 印出 "foo"
print $b; # 印出 "bar"
}
print $a; # 印出 "foo"
print $b; # 沒有顯示任何東西; 因為 $b 已經離開 { } 區塊範圍了,此 $b 並非區塊中的 $b。 |
通常,我們在程式一開始,會宣告 use strict; 搭配 my 來使用,表示我們將使用嚴格的變數檢查。這樣做的好處之一是,避免不小心打錯變數名稱,將來有利於程式偵錯。比如:
#! /usr/bin/perl
use strict; # 表示:變數使用前,需先 my 宣告一下才行
my $name = "foo";
if (some_condition) {
my $base = "bar";
print $name;
print $base;
}
print $mame; # 打錯字了,應該是 $mame,由於 $mame 這個變數沒有事先用 my 宣告,
所以程式執行時會發生錯誤,您便可藉此得知:原來是變數 $mame 打錯了,應該是 $name 才對。 |
除了 my 之外,另有一 local 作用類似,但意義不同。由於初學者不易弄懂 local 和 my 的差別,因此暫不說明 local 的用法。