my $x;
מגדיר משתנה לוקאלי
----------------
$x=3;
זה אתחול של משתנה גלובאלי
----------------
אם עושים
$x=3;
ולפני זה אין
use strict 'vars';
אז הוא מוגדר כמשתנה גלובאלי
----------------
אם עושים
$x=3;
ולפני זה יש
use strict 'vars';
אז יש שגיאה
ולכן חובה להגדיר משתנה עם
my $x;
כדי שהוא יהיה לוקאלי
----------------
אם רוצים להשתמש בקטע מסוים רק במשתנים גלובאליים אפילו שבתחילת התוכנית יש
use strict 'vars';
אז צריך לתחום אותו בבלוק הבא
{no strict 'vars';
}
--------------
$x=3;
a();
sub a(){
local $x=4;
}
print $x;
בדוגמה הזאת יודפס
3
ולא 4
מכיוון שהפקודה
local
מחליפה את הערך של
$x
לערך אחר רק זמנית בתוך הפונקציה
a()
אבל כשיוצאים מהפונקציה בחזרה לתוכנית ה
main()
אז הערך שהיה ב
$x
לפני שנכנסו לפונקציה, חוזר
(כי הוא נשמר במקום זמני לפני שהשתמשנו ב
local)