שגיאות קטלניות כלליות#

dieים בזמן ריצה שאינם שגיאות הידור של regex ואף לא שגיאות תחביר בזמן הידור: פתרון מתודות, ירושה, קריאות לתת־שגרות, מאפיינים, ושגיאות שימוש ברמת המודול. כולן קטלניות (F) וניתנות ללכידה באמצעות eval או try.

קריאות לתת־שגרות#

`Undefined subroutine &%s called`#

(F) קריאה ציינה תת־שגרה שאינה קיימת בזמן הקריאה. השם המוסמך במלואו מוצג. סיבות: שגיאת כתיב בשם, היעדר use של המודול שמגדיר אותה, או קריאה לפני שה־sub מוצהר בהקשר שבו הדבר חשוב. הצורה בזמן הריצה `Undefined subroutine &NAME called at FILE line N.` מוסיפה את אתר הקריאה.

פתרון מתודות וירושה#

`Can't use anonymous symbol table for method lookup`#

(F) דיספאץ« של מתודה הגיע לחבילה ללא טבלת סמלים בעלת שם (stash אנונימי). הפניה blessed חייבת להצביע אל חבילה אמיתית בעלת שם כדי שקריאות למתודות ייפתרו.

`Recursive inheritance detected in package '%s'`#

(F) שרשרת ה־@ISA של מחלקה מובילה בחזרה אל עצמה - מעגל. פתרון המתודות אינו יכול להמשיך. שברו את הלולאה בגרף הירושה.

`Inconsistent hierarchy during C3 merge of class '%s'`#

(F) תחת סדר פתרון המתודות C3, ללינאריזציה של ההורים של מחלקה זו אין סדר עקבי. שני הורים חלוקים על סדרו של אב משותף. בנו מחדש את הירושה כך שסדרי ההורים יהיו תואמים, או החזירו את המחלקה ל־MRO ברירת המחדל מסוג depth-first.

`Invalid mro name: '%s'`#

(F) קריאת use mro '...' ציינה סדר שאינו קיים. שני השמות התקפים הם `dfs` (סדר ה־depth-first שהוא ברירת המחדל) ו־`c3`.

מאפיינים#

`Unterminated attribute parameter in attribute list`#

(F) מאפיין עם פרמטר בסוגריים - :Foo(bar - לא נסגר. אזנו את הסוגריים ברשימת המאפיינים.

שגיאות שימוש במודול#

אלה מגיעות ממודולים מקוריים כאשר הם נקראים באופן שגוי. הן קטלניות משום שהקריאה אינה יכולה להמשיך.

`Usage: POSIX::sprintf(pattern, args...)`#

(F) פונקציית POSIX נקראה עם הארגומנטים השגויים. ההודעה מציינת את צורת הקריאה הנכונה.

`IO::Socket::%s`#

(F) פעולת IO::Socket נכשלה; ההודעה מציינת את הקריאה הספציפית.

ראו גם#

  • @ISA - מערך הירושה שעל תכולתו נסבות שגיאות ה־MRO.

  • mro - בחירה ובדיקה של סדר פתרון המתודות.

  • bless - משייך הפניה לחבילה שעל המתודות שלה נסבה שגיאת טבלת־הסמלים האנונימית.

  • שגיאות ערך וטיפוס - ”Not a subroutine reference“ ושאר האבחונים מסוג איזה־סוג־ערך.