hakkr has asked for the wisdom of the Perl Monks concerning the following question:

I am using CGI:carp set_message to hide error messages from the user. I want to call the handle_errors sub as an object method not just a code referance so I can use some of the objects attributes in the error routine. i.e instead of
set_message(\&handle_errors);
I want
 set_message(\&$self->handle_errors); but this does not work So I guess I am asking how do you make a referance to an object method. The handle_errors method seem to gets the error message passed in as its first argument instead of the class name so is it even possible to make handle_errors a class method. I am not calling set_message in a BEGIN block as I want to be mod_perl compatable and am using CGI::Application
sub handle_errors { #my $self=shift; my $msg=shift error logging stuff }

Replies are listed 'Best First'.
Re: CGI::Carp set_message
by Joost (Canon) on Jul 29, 2002 at 15:03 UTC
    Try using a closure:
    my $self = something; set_message( sub { $self->handle_errors(@_) } );
    -- Joost downtime n. The period during which a system is error-free and immune from user input.
      Thank you Joost, that works a treat and it's doubtful I would ever of got to that. I did't exactly see a flood of answers for this one so I guess it must of been a tough question.