For Programmers: Free Programming Magazines  


Home > Archive > PERL Modules > April 2005 > output-monitoring module









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author output-monitoring module
Henry Townsend

2005-04-06, 12:40 pm

Please forgive me for asking here, I have done some searches and come up
empty but I still think this module may have been written and want to
know for sure before I go trying to roll my own.

I'm thinking of writing a module which would monitor the output of any
script which "use"d it looking for errors. E.g. something like this

use Output::Monitor STDOUT => qr/re1/, STDERR => qr/re2/;

This would - perhaps by using tied filehandles - watch all data flowing
to stdout and stderr, apply the specified REs to each line, and convert
the exit status to nonzero if any matches occur.

The idea is to replace a common technique where I work, which is to
write build scripts to divert their own output to a logfile internally,
then read that logfile to discover any unflagged errors. This makes it
hard for external tools to redirect output as they choose, requires
intimate knowledge of the script to know where it's writing its logfile
to, etc. What I'd hope to achieve with the above is transparency, i.e.
by simply including the module within a script it would be converted
from unchecked to checked, without the script having to change anything
else while the same data as before flows to stdout and stderr.

Before anyone says "just check exit status" - we do but we're stuck with
certain underlying build tools which have unreliable status so we must
parse output as a belt-and-suspenders plan.

Does anyone know of such a module, or something close to use as a
starting point?

--
Henry Townsend
Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com