مقایسه عددی و رشته‌ای

تفاوت حیاتی == و eq، تبدیل خودکار و خطاهای رایج.

دو دنیای مقایسه

پرل دو مجموعه عملگر مقایسه دارد — انتخاب غلط = باگ پنهان!

معنیعددیرشته‌ای
مساوی==eq
نامساوی!=ne
کوچک‌تر<lt
بزرگ‌تر>gt
کوچک‌تر مساوی<=le
بزرگ‌تر مساوی>=ge
سه‌حالته<=>cmp

قانون طلایی

اگر داده‌تان عدد است (سن، قیمت، تعداد) → عملگر عددی. اگر متن است (اسم، کد، رمز) → عملگر رشته‌ای.

خطای کلاسیک

{ ❌ فاجعه! }
if ("foo" == "bar") { ... }    { همیشه true! هر دو 0 می‌شوند }

{ ✅ درست }
if ("foo" eq "bar") { ... }    { false — درست }

تبدیل خودکار رشته به عدد

وقتی رشته در زمینه عددی استفاده شود، پرل از اولش عدد می‌گیرد:

say "42abc" + 0;     { 42 — از اول عدد گرفت }
say "abc" + 5;       { 5 — abc شد 0 }
say "3.14pi" * 2;    { 6.28 }

<=> — عملگر فضا‌نما (Spaceship)

عملگر معروف پرل! سه مقدار برمی‌گرداند:

say 5 <=> 3;    { 1 — چپ بزرگ‌تر }
say 3 <=> 5;    { -1 — راست بزرگ‌تر }
say 5 <=> 5;    { 0 — برابر }
این عملگر برای مرتب‌سازی عددی استفاده می‌شود: sort { $a <=> $b } @nums — بعداً می‌بینید!

عملگرهای منطقی

عملگرمعنیمعادل
&& / andوهر دو درست
|| / orیاحداقل یکی
! / notنقیضبرعکس
my $age = 20;
if ($age >= 13 && $age <= 19) { say "نوجوان" }
if ($age < 13 || $age > 64) { say "کودک یا سالمند" }

خلاصه

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

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