دامنه متغیرها
my در برابر متغیر سراسری، use strict و چرا my همیشه.
my — متغیر محلی
my متغیر را در بلوک فعلی تعریف میکند:
sub test {
my $x = 10; { فقط داخل این sub }
say $x; { 10 }
}
test();
{ say $x } { خطا! $x اینجا نیست }
بدون my — سراسری (خطرناک!)
$global = 42; { بدون my = سراسری }
متغیر بدون my سراسری است — همهجا دیده میشود و باگهای پنهان میسازد. همیشه my بنویسید!
use strict — نگهبان شما
use strict; { در ابتدای هر برنامه واقعی }
my $name = "Ali";
say $nmae; { خطای کامپایل! غلط املایی گرفته شد }
قانون حرفهای: هر اسکریپت پرل با use strict; و use warnings; شروع شود. اینها غلطهای املایی و مشکلات را زود نشان میدهند.
بلوکها دامنه میسازند
my $x = 5;
{
my $x = 10; { x جدید — فقط این بلوک }
say $x; { 10 }
}
say $x; { 5 — بیرونی دستنخورده }
متغیر مشترک بین sub ها
my $counter = 0; { سراسریِ my — در فایل }
sub bump {
$counter++; { دسترسی به بیرونی }
}
bump();
bump();
bump();
say $counter; { 3 }
خلاصه
- my = محلی به بلوک
- بدون my = سراسری — خطرناک
- use strict/warnings همیشه
- my در فایل = مشترک بین subها
این مبحث بخشی از دوره آموزش کامل پرل است.