Comment imprimer sur une variable avec Perl?Comment puis-je imprimer sur une variable au lieu d'un fichier, en Perl?
Je travaille sur un programme pendant un certain temps qui enregistre son itérative progrès de façon très bavard ...
print $loghandle $some_message;
Cependant, je voudrais également imprimer de manière sélective certains des messages à un fichier différent. Bien sûr, je pourrais saupoudrer avec le code ...
print $loghandle $some_message
print $otherloghandle $some_message
Ou réécrire toute l'entreprise en fonction. Blabla.
Ce que je veux faire est de faire de la magie quand j'ouvre le loghandle de $ pour que quand je suis print
« ing, je suis en fait juste faire une opération sprintf
ish contre une variable (appeler $current_iteration
), de sorte que quand je suis à un point de décision que je peux faire quelque chose comme ça ...
print $real_log_file $current_iteration;
print $other_real_log_file $current_iteration if($condition);
Je suis assez sûr que je l'ai vu quelque chose comme ça quelque part, mais je ne sais pas où il est ou où chercher .
edit: File :: Tee résout ce problème dans une certaine mesure sur * nix, mais je cours sous Windows.
Deja vu? http://stackoverflow.com/questions/1532544/how-can-i-send-stdout-and-stderr-to-a-log-file-and-to-the-screen-in-win32-perl/1532691# 1532691 –
Peut-être. Je n'essaie pas de té les flux réels (même si cela n'a pas d'importance); il s'agit plutôt de définir une variable pour agir en tant que flux de destination. Je suis paresseux et je ne veux pas réécrire 50 messages de journalisation, voir. :-) –
@Paul Nathan Je suis lié à la réponse de brian d foy. Utilisez Log4perl. Exprimez votre '$ condition' comme niveau de journalisation, définissez les actions. Je ne l'ajoute pas comme une réponse car je n'ai pas le temps de vérifier comment cela fonctionne, mais je recommande fortement Log4perl basé sur l'expérience passée. –