¿Cómo puedo imprimir una variable con Perl?¿Cómo puedo imprimir en una variable en lugar de un archivo, en Perl?
He estado trabajando en un programa durante un tiempo que registra su iterativo el progreso de una manera muy prolijo ...
print $loghandle $some_message;
Sin embargo, me gustaría también imprimir selectivamente algunas de las mensajes a un archivo diferente. Naturalmente, podría rociar el código con ...
print $loghandle $some_message
print $otherloghandle $some_message
O reescribir todo el asunto en una función. Paja.
Lo que quiero hacer es hacer un poco de magia cuando abro el $ loghandle de manera que cuando estoy print
'ing, en realidad estoy simplemente haciendo una operación sprintf
ish contra una variable (llámese $current_iteration
), de manera que cuando llegue a un punto de decisión que pueda hacer algo como esto ...
print $real_log_file $current_iteration;
print $other_real_log_file $current_iteration if($condition);
estoy bastante seguro de que he visto algo como esto en alguna parte, pero no tengo ni idea de dónde está o dónde buscar .
editar: File :: Tee resuelve este problema hasta cierto punto en * nix, pero corro en 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 –
Posiblemente. No estoy tratando de ver las transmisiones realmente (aunque eso no importa); es más establecer una variable para actuar como una secuencia de destino. Estoy siendo flojo y no quiero reescribir 50 mensajes de registro, mira. :-) –
@Paul Nathan I vinculado a la respuesta de Brian Foy. Use Log4perl. Exprese su '$ condición' como un nivel de registro, defina las acciones. No estoy agregando esto como una respuesta, ya que no tengo tiempo para comprobar cómo funciona, pero recomendaría Log4perl a fondo en función de la experiencia pasada. –