اسکالرها (Scalars)
متغیر اسکالر با $: اعداد، رشتهها، undef و درج در رشتهها.
اسکالر: واحد پایه داده پرل
اسکالر (Scalar) یک تک مقدار است: یک عدد، یک رشته، یا undef. اسکالرها با سیگیل $ مشخص میشوند:
my $name = "Ali"; { رشته }
my $age = 16; { عدد صحیح }
my $pi = 3.14159; { عدد اعشاری }
my $nothing; { undef — تعریفنشده }
کلمه
my متغیر را بهصورت محلی (lexical) اعلام میکند — همیشه از my استفاده کنید! این از بهترین شیوههای پرل است.پرل نوعبندی سخت ندارد!
برخلاف پاسکال، یک اسکالر میتواند هر چیزی باشد و عوض شود:
my $x = 42; { عدد }
$x = "hello"; { حالا رشته! }
$x = 3.14; { حالا اعشاری! }
پرل خودش بین عدد و رشته بر اساس زمینه (context) تبدیل میکند:
my $str = "42";
say $str + 8; { 50 — رشته به عدد تبدیل شد! }
my $num = 10;
say $num . "!"; { "10!" — عدد به رشته تبدیل شد! }
تخصیص و عملیات
my $x = 5;
my $y = $x + 3; { 8 }
$x = $x * 2; { 10 }
$x += 5; { 15 — میانبر }
$x .= "!"; { "15!" — اتصال میانبر }
undef — مقدار تعریفنشده
متغیر بدون مقدار = undef:
my $x;
if (defined($x)) { say "defined" } else { say "undefined" }
$x = 0;
if (defined($x)) { say "صفر هم defined است!" }
undef با صفر یا رشته خالی متفاوت است!
defined() فقط چک میکند مقدار دارد یا نه.درج در رشته (Interpolation)
یکی از قویترین ویژگیهای پرل:
my $name = "Ali";
my $age = 16;
my @fruits = ("سیب", "موز");
say "سلام $name!"; { درج اسکالر }
say "${name}جان"; { با آکولاد — مرز مشخص }
say "میوهها: @fruits"; { درج آرایه — با فاصله }
say 'بدون درج: $name'; { تککوتیشن — literal }
افزایش و کاهش
my $i = 5;
$i++; { 6 }
$i--; { 5 }
my $j = $i++; { j=5, i=6 — پسافزایش }
my $k = ++$i; { k=7, i=7 — پیشافزایش }
خلاصه
- اسکالر = تک مقدار با $
- my برای اعلام محلی
- تبدیل خودکار عدد ↔ رشته
- undef = بدون مقدار، با defined() چک شود
- "..." درج دارد، '...' ندارد
این مبحث بخشی از دوره آموزش کامل پرل است.