دامنه متغیرها

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 }

خلاصه

این مبحث بخشی از دوره آموزش کامل پرل است.

ابزارهای مرتبط