Mike Friedman wrote:
Is there an easy way, in a perl script, to suppress error messages written
by RT methods to STDERR? For example, inside a loop, I have something
$TicketNumber = $TicketObj->Load($i);
next unless (defined $TicketNumber);
Why don’t you RT::Tickets object instead?
I’m using an RT::Ticket object, $TicketObj is just a loop variable whose
value is such an object. I need the RT::Ticket->Load method in order to
load a specific ticket number(*). (I don’t see a Load method in
RT::Tickets, only in RT::Ticket).
(*) Because the purpose of this script is to run through a range of
tickets looking only for those that have status ‘deleted’. Which means I
can’t use LimitStatus, for example, because it won’t return deleted
Looking in the source for Ticket_Overlay.pm, I see where it is writing out
error messages. It’s those messages I want to suppress. The docs say
that if the specified ticket number doesn’t exist, ‘undef’ is returned,
which is true and that’s all I need. I don’t want an error message to
appear; I’ll just terminate my loop silently in that case.
As it happens, I have found a workaraound, using perl facilities. I dup
the STDERR filehandle, save its destination, temporarily open STDERR as
/dev/null and then reset the original destination for STDERR when I am no
longer using Ticket->Load. But this approach could get ugly in other
scripts, where I might be writing my own error messages even as I’m also
using the Ticket->Load method.
Mike Friedman System and Network Security
mikef@ack.Berkeley.EDU 2484 Shattuck Avenue
1-510-642-1410 University of California at Berkeley