בפרל אין סוג משתנה בוליאני ובכל זאת ניתן למצוא בתיעוד של פרל התייחסויות לפונקציות שמחזירות ערך "בוליאני". בתיעוד יש מקומות שכתוב שפונקציה מחזירה true (אמת) או false (שקר).

אז מה האמת?

בפרל אין סוג משתנה בוליאני, אבל כל ערך סקלרי - כאשר הוא נבדק באמצעות if יהיה או true "אמת" או false "שקר". כך שניתן לכתוב

if ($x eq "foo") {
}

and you can also write

if ($x) {
}

הבדיקה הראשונה בודקת האם הערך של המשתנה$xזהה למחרוזת "foo" בעוד שהבדיקה השנייה בודקת האם $x עצמו הוא בעל ערך "אמת".

מהם ערכי "אמת" ו"שקר" בפרל?

זה עניין מאוד פשוט נראה מה כתוב בתיעוד

המספר 0, המחרוזות '0' '', הרשימה הריקה "()", ו- "undef" כל אילו ערכם false בהקשר בוליאני. כל ערך אחר הוא true. הפיכתו של ערך true באמצעות "!" או "not" מחזירה ערך false מיוחד. כשהערך משמש כמחרוזת פרל מתייחסת אליו כאל '', אך כמספר פרל מתייחסת אליו כאל 0.

מהתיעוד perlsyn תחת הכותרת "Truth and Falsehood" ("אמת ושקר")

הערכים הסקלריים הבאים נחשבים ל-false

  • undef - הערכך הבלתי מוגדר
  • 0 המספר 0, אפילו אם הוא נכתב 000 או 0.0
  • '' המחרוזת הריקה.
  • '0' המחרוזת המכילה סיפרת 0 אחת.

כל ערך אחר, כולל הערכים הבאים, הם true:

  • 1 כל מספר שאינו 0
  • ' ' מחרוזת שיש בה רווח
  • '00' מחרוזת עם הסיפרה 0 פעמיים או יותר
  • "0\n" 0 עם סימן שורה חדשה אחריו.
  • 'true'
  • 'false' כן, אפילו ערכה של המחרוזת 'false' הוא true.

נראה לי שהסיבה לכך היא של לארי וול (Larry Wall), היוצר של פרל, יש השקפת עולם כללית חיובית. הוא ודאי חושב שאין הרבה דברים רעים ושקריים בעולם. רוב הדברים הם נכונים ואמיתיים.