Éviter oublis communs en perl

Saisie d'une faute de frappe ou deux au cours de la rédaction d'un programme Perl est pas rare. Mais quand vous essayez d'exécuter un programme contenant une saisie de texte slip-up, Perl habituellement devient confus et vous le dit en signalant une erreur. La réaction naturelle pour la plupart des gens, même ceux avec des années d'expérience de la programmation, est d'obtenir inquiets ou en colère ou les deux quand un message d'erreur apparaît.

Sommaire

Ne paniquez pas. Prenez une respiration profonde. Prenez une autre respiration lente et profonde. Sérieusement, vous ne pouvez pas aller à la racine du problème si vous êtes tout tendu et gêné. Peu importe combien d'années vous programmez, vous finissez toujours par trouver quelques erreurs dans le code vous écrit.

Donc, maintenant que vous êtes (nous l'espérons!) Un peu plus calme, vous pouvez commencer à apprécier le fait que Perl a des messages d'erreur plus utile que presque tout autre langage de programmation. Les messages ne sont pas toujours raison sur l'argent, mais ils peuvent vous assez proche de l'endroit où le problème réside dans un minimum de recherche de votre part.

Perl a une myriade de messages d'erreur, mais quelques-uns certainement recadrer plus que d'autres en raison de certaines fautes de frappe courantes que tout le monde semble faire. Les erreurs suivantes résultent de mineurs goofs de saisie de texte que vous pouvez facilement éviter.

Oubliant un point-virgule

Probablement message d'erreur la plus commune que vous voyez lors de la programmation en Perl ressemble à ceci:

# Erreur de syntaxe, près de "ouverte"
Fichier 'counter1.pl'- Ligne 10
# Exécution abandonnée en raison d'erreurs de compilation.

Vous pouvez regarder et regarder la ligne 10, l'un avec la déclaration ouverte, et vous ne verrez rien de mal à cela. L'astuce ici est d'examiner la déclaration qui vient avant la déclaration ouverte et voir si elle se termine par un point-virgule. (Perl sait qu'une déclaration se termine seulement quand il rencontre un point-virgule.) Dans ce cas, l'erreur est causée par un point-virgule manquant à la fin de la ligne 7 du programme:




$ TheFile = "sample.txt"

Oubliant un guillemet

Le genre suivante de message d'erreur peut être extrêmement frustrant si vous ne savez pas d'une solution miracle:

# Mot Bare trouvé where operator expected, près de
# "Ouvert (INFILE, theFile $) ou mourir" Le "
# (Peut-être un multi-ligne "emballement" chaîne à partir de la
# Ligne 7)
Fichier 'counter1.pl'- Ligne 10

Cette erreur est similaire à oublier un des points-virgules à la place, il est un guillemet qui a omis accidentellement:

$ TheFile = "sample.txt;

Dans ce cas, Perl a fait un bon travail de deviner ce qui est faux, ce qui suggère qu'une multi-ligne emballement "" de chaîne sur la ligne 7 est le problème, ce qui est précisément le droit.

Saisie d'une parenthèse trop ou trop peu

Lorsque vous avez des charges d'ouverture et de fermetures de parenthèses dans un programme, il est facile de glisser un supplémentaire dans un accident. Si tel est le cas, vous pouvez voir un message de Perl qui lit quelque chose comme ceci:

# Erreur de syntaxe, près ») eq"
Fichier 'counter1.pl'- Ligne 38
# Erreur de syntaxe, près de "}"
Fichier 'counter1.pl'- Ligne 42

Ici, Perl ne peut pas déterminer où l'erreur est exactement, mais en fait elle a vu juste sur la première hypothèse: Ligne 38 contient une parenthèse supplémentaire droite:

si (substr ($ Theline, CharPos $, 1)) eq "")

Ayant un parenthèse trop peu un programme Perl peut causer plus difficiles à trouver, les problèmes:

# Vous ne pouvez pas utiliser un objet constant que arg gauche de implicite --->,
# Près de «1}"
Fichier 'counter1.pl'- Ligne 39
# Scalar trouvé où l'opérateur devrait, à proximité de "$" CharPos
Fichier 'counter1.pl'- Ligne 40
# (Manquant virgule sur la ligne précédente?)
# Erreur de syntaxe, près de "CharPos de $"
Fichier 'counter1.pl'- Ligne 40

Yarp! Tout cela a été produit parce que la dernière parenthèse sur la ligne 38 est manquante:

si (substr ($ Theline, CharPos $, 1) eq ""

Voici une autre bonne leçon à traquer les erreurs de frappe: commencer là où Perl dit qu'il a trouvé une erreur. Si vous ne trouvez pas l'erreur là, monter une ligne ou deux et voir si le problème a commencé plus tôt.

Un dernier conseil: Trust Perl pour trouver les fautes de frappe simples pour vous (où il peut), et rappelez-vous que ça vous donne toute l'aide qu'elle peut, ce qui est plus que vous pouvez dire pour de nombreux langages de programmation.


» » » » Éviter oublis communs en perl