مقایسه عددی و رشتهای
تفاوت حیاتی == و 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 "کودک یا سالمند" }
خلاصه
- عدد → == != < >، رشته → eq ne lt gt
- "foo" == "bar" همیشه true — خطرناک!
- <=> و cmp برای sort
این مبحث بخشی از دوره آموزش کامل پرل است.