Come posso stampare su una variabile con Perl?Come posso stampare su una variabile invece di un file, in Perl?
ho lavorato su un programma per un po ', che registra la sua iterativa il progresso in un modo altamente dettagliato ...
print $loghandle $some_message;
Tuttavia, mi piacerebbe anche stampare in modo selettivo alcuni dei messaggi in un altro file. Naturalmente, potrei cospargere il codice con ...
print $loghandle $some_message
print $otherloghandle $some_message
Oppure riscrivere l'intera attività in una funzione. Blah.
Quello che voglio fare è di fare un po 'di magia quando apro il $ loghandle in modo che quando sono print
'ing, sto solo facendo un'operazione di sprintf
ish contro una variabile (lo chiamano $current_iteration
), in modo che quando arrivo fino a un punto di decisione che posso fare qualcosa di simile ...
print $real_log_file $current_iteration;
print $other_real_log_file $current_iteration if($condition);
sono abbastanza sicuro che ho visto qualcosa di simile da qualche parte, ma non ho idea di dove sia o dove andare a cercare .
modifica: File :: Tee risolve questo problema in una certa misura su * nix, ma corro su 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 –
Forse. Non sto provando davvero a riprodurre i flussi reali (anche se non importa); è più l'impostazione di una variabile che funge da flusso di destinazione. Sono pigro e non voglio riscrivere 50 messaggi di registrazione dispari, vedi. :-) –
@Paul Nathan mi sono collegato alla risposta di brian d foy. Usa Log4perl. Esprimi la tua '$ condizione' come livello di registrazione, definisci le azioni. Non sto aggiungendo questo come una risposta in quanto non ho il tempo di verificare come funziona, ma consiglio vivamente Log4perl sulla base dell'esperienza passata. –