# Συντακτικά σφάλματα κατά τη μεταγλώττιση Σφάλματα που εγείρει ο αναλυτής πριν εκτελεστεί το πρόγραμμα. Ένα σφάλμα κατά τη μεταγλώττιση σταματά ολόκληρο το πρόγραμμα: τίποτα δεν εκτελείται, επειδή ο πηγαίος κώδικας δεν μπόρεσε να μετατραπεί σε εκτελέσιμα 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): η διαφορά είναι *πότε* εντοπίζεται η απούσα sub. Βεβαιωθείτε ότι έχει γίνει `use` του αρθρώματος που την ορίζει, και ότι το όνομα είναι γραμμένο σωστά και πλήρως προσδιορισμένο όπου το πακέτο έχει σημασία. ## Δείτε επίσης - [Γενικά μοιραία σφάλματα](fatal-general.md) - η μορφή χρόνου εκτέλεσης του σφάλματος μη ορισμένης υπορουτίνας. - [Υπορουτίνες](../perlsub.md) - δήλωση, πρωτότυπα, και οι κανόνες που καθορίζουν πότε επιλύεται μια κλήση. - [`use`](../perlfunc/use.md) - φέρνει το άρθρωμα που ορίζει την υπορουτίνα, κατά τη μεταγλώττιση.