2009-06-21 3 views
6

Comment puis-je vérifier qu'une variable a une valeur spécifique en Perl? Y at-il une commande pour arrêter l'exécution d'un script pour rechercher certaines de ses variables?Comment puis-je avoir des assertions variables en Perl?

Je me demande si je peux utiliser la pratique Pythonic d'insérer:

assert 0, (foo, bar) 

aux scripts de débogage d'une manière debuger-moins?

Répondre

2

Il existe un script au PerlMonks qui introduit une méthode d'assertion rapide.

La vitesse est importante car Perl est interprété et les contrôles inline aura un impact sur les performances (contrairement à des macros simples C par exemple)


Je ne sais pas si ces choses vont être directement utilisables.


Ok! C'est ce que je cherchais - PDF Warning: Test-Tutorial.pdf. Le Test::Harness est utilisé pour écrire des tests de module Perl.

10

Une recherche CPAN rapide suggère Carp::Assert.

+1

+1 pour avoir saisi plus de caractères plus rapidement que moi. Je vais modifier l'URL pour être agnostique de version si. –

+0

J'allais commenter sur votre réponse à propos de la finition photo. Quant à l'URL, je l'oublie constamment, alors merci. – Telemachus

5

Smart::Comments sont gentils.

+0

Smart :: Commentaires ++ Lorsqu'il est utilisé avec le commutateur -ENV, c'est un outil fantastique pour ce genre de chose. Bien mieux que d'avoir à retirer tous les tests avant d'aller en production, comme quelqu'un d'autre l'a suggéré. – RET

1
$var_to_check =~ /sometest/ or die "bad variable!"; 

J'ai tendance à jeter des choses comme ça dans mon code, et utiliser plus tard, une recherche et de remplacement pour se débarrasser d'eux (dans le code de production).

En outre, 'eval' peut être utilisé pour exécuter une section d'erreurs de code et de capture et peut être utilisé pour créer une fonctionnalité de gestion des exceptions. Si vous affirmez qu'une valeur n'est pas 0, vous voulez peut-être lancer une exception et gérer ce cas d'une manière spéciale?

0
if ($next_sunrise_time > 24*60*60) { warn("assertion failed"); } # Assert that the sun must rise in the next 24 hours. 

Vous pouvez le faire si vous n'avez pas accès à Perl 5.9 qui est nécessaire pour Carp::Assert.

Questions connexes