# שגיאות תחביר בזמן הידור שגיאות שהמפענח מעלה לפני שהתוכנית רצה. שגיאת זמן הידור עוצרת את כל התוכנית: דבר אינו מתבצע, משום שלא ניתן היה להפוך את המקור ל־ops ברי־הרצה. בשונה מ־`die`ים בזמן ריצה, אלה אינם ניתנים ללכידה עם `eval BLOCK` - אך `eval` של מחרוזת מקור שנכשלת בהידור מדווח עליהן דרך `$@`: ```perl my $code = '1 +'; eval $code; warn "compile failed: $@" if $@; ``` ## פתרון תת־שגרות בזמן הידור ### ``Undefined subroutine &%s`` **(F)** המפענח פתר קריאה אל תת־שגרה בעלת שם שאינה קיימת בזמן הידור. זוהי המקבילה בזמן הידור לשגיאת זמן הריצה [`Undefined subroutine &%s called`](fatal-general.md): ההבדל הוא *מתי* תת־השגרה החסרה מבחינים בה. ודאו שהמודול המגדיר נכלל באמצעות `use`, ושהשם מאוית נכון ומוסמך במלואו במקום שבו החבילה חשובה. ## ראו גם - [שגיאות קטלניות כלליות](fatal-general.md) - הצורה בזמן ריצה של שגיאת תת־השגרה הלא־מוגדרת. - [תת־שגרות](../perlsub.md) - הצהרה, פרוטוטיפים, והכללים שמכריעים מתי קריאה נפתרת. - [`use`](../perlfunc/use.md) - מושך פנימה את המודול שמגדיר את תת־השגרה, בזמן הידור.