Question

Est-il possible d'ajouter la balise -w à la première ligne d'un programme Perl, puis exécutez le programme à partir d'un shell comme bash ou dos et d'écrire tous les avertissements dans un fichier?

perl somescript.pl > somefile.txt

Ceci est un retour à un bureau de vérification des programmes COBOL à l'école. Je voudrais avoir tous les avertissements devant moi sur un morceau de papier pour que je puisse passer par mon programme et les fixer un par un. Si la commande ci-dessus ne fonctionne pas, est-il un moyen par programme pour obtenir toutes les mises en garde d'un script dans un fichier? Merci les gars!

Était-ce utile?

La solution

Essayez ceci:

perl somescript.pl 2&> somefile.txt

Lorsque vous utilisez la redirection simple (de >), vous redirigez que le flux de sortie standard du programme, alors que les mises en garde sont sauvés à la norme erreur flux de sortie. Voir par exemple le Bash Manuel de référence .

Il y a aussi Vi :: QuickFix Module sur CPAN qui peut sauver les avertissements dans un fichier que vous pouvez charger dans Vim et inspecter tous les avertissements sans chasse les numéros de ligne à la main. (Google pour vim quickfix .) Je n'ai pas essayé moi-même, cependant.

Autres conseils

Zoul manipulé la substance de redirection, alors voici la réponse étonnamment complexe sur les avertissements.

Il suffit d'appeler le programme comme ceci: perl -w script.pl

Cela force les avertissements à activer partout dans le script et tous les modules. Il est vraiment préférable d'utiliser les warnings dans chaque module que vous écrivez. Voir perldoc perllexwarn pour plus d'informations sur ce sujet.

Une autre astuce qui est agréable quand le débogage est d'utiliser carpe :: toujours. Si les forces d'une trace complète de la pile sur toutes les erreurs. Je trouve cela très très utile. Il suffit de lancer votre script comme ceci:

perl -MCarp::Always somescript.pl

ou de l'obtenir dans un fichier:

perl -MCarp::Always somescript.pl 2&> somefile.txt

Et enfin, je me éloigne du sujet de votre question un peu plus. Beaucoup de gens aiment instrument leur code en utilisant une bibliothèque de journalisation comme Log4Perl . De tels outils vous permettent d'activer la journalisation à un certain niveau (normal ou débogage par exemple) ou sur des parties spécifiques de votre application sur les pistes individuelles de votre code. Ceci est l'évolution finale (?) De la déclaration d'impression de débogage. Il peut être très utile dans les échecs de débogage tout dans le développement, et sur le terrain une fois que vous avez atteint la phase d'entretien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top