Συντακτικά σφάλματα κατά τη μεταγλώττιση#

Σφάλματα που εγείρει ο αναλυτής πριν εκτελεστεί το πρόγραμμα. Ένα σφάλμα κατά τη μεταγλώττιση σταματά ολόκληρο το πρόγραμμα: τίποτα δεν εκτελείται, επειδή ο πηγαίος κώδικας δεν μπόρεσε να μετατραπεί σε εκτελέσιμα ops. Σε αντίθεση με τα die του χρόνου εκτέλεσης, αυτά δεν παγιδεύονται με eval BLOCK - αλλά ένα eval συμβολοσειράς πηγαίου κώδικα που αποτυγχάνει να μεταγλωττιστεί τα αναφέρει μέσω της $@:

my $code = '1 +';
eval $code;
warn "compile failed: $@" if $@;

Επίλυση υπορουτίνας κατά τη μεταγλώττιση#

`Undefined subroutine &%s`#

(F) Ο αναλυτής επέλυσε μια κλήση προς μια ονομασμένη υπορουτίνα που δεν υπάρχει κατά τη μεταγλώττιση. Αυτό είναι το αντίστοιχο κατά τη μεταγλώττιση του σφάλματος χρόνου εκτέλεσης Undefined subroutine &%s called: η διαφορά είναι πότε εντοπίζεται η απούσα sub. Βεβαιωθείτε ότι έχει γίνει use του αρθρώματος που την ορίζει, και ότι το όνομα είναι γραμμένο σωστά και πλήρως προσδιορισμένο όπου το πακέτο έχει σημασία.

Δείτε επίσης#

  • Γενικά μοιραία σφάλματα - η μορφή χρόνου εκτέλεσης του σφάλματος μη ορισμένης υπορουτίνας.

  • Υπορουτίνες - δήλωση, πρωτότυπα, και οι κανόνες που καθορίζουν πότε επιλύεται μια κλήση.

  • use - φέρνει το άρθρωμα που ορίζει την υπορουτίνα, κατά τη μεταγλώττιση.