-
Le code dans un bloc BEGIN{} est exécuté à la compilation, dès qu'il est rencontré. A vrai dire use() n'est qu'un BEGIN{} déguisé qui fait un require() et un import(). Pourquoi est-il important que les importations soit effectuées à la compilation ? C'est parce que certaines des ces importations modifient la façon dont la suite du code est compilée, par exemple si une fonction n'est pas déclarée au moment où l'on compile une utilisation de cette fonction, Perl protestera si tu ne mets pas de parenthèses. Avec "strict" c'est encore plus fragrant parce que le problème se pose alors également pour les variables globales, de paquetage comme $RE, qui doivent alors être prédéclarées avant qu'on puisse compiler une utilisation de cette variable.
--
Jedaï
-