perl

Perl: Difference between my and local

Link: http://www.perlmonks.org/?node_id=94007

my ต่างกับ local ตรงที่

my เป็นการสร้างตัวแปรใหม่ สำหรับ code block นั้น ๆ
แต่
local จะสร้างตัวแปรใหม่และเปลี่ยนค่าตัวแปร Global ให้ด้วย จนกว่าจะสิ้นสุด block นั้น ๆ

ตัวอย่าง ($::a = global variable)

$a = 3.14159;
{
  local $a = 3;
  print "In block, \$a = $a\n";
  print "In block, \$::a = $::a\n";
}
print "Outside block, \$a = $a\n";
print "Outside block, \$::a = $::a\n";

# This outputs
In block, $a = 3
In block, $::a = 3
Outside block, $a = 3.14159
Outside block, $::a = 3.14159
$a = 3.14159;
{
Syndicate content