Well, use eval(). For example, for my HTTP-Daemon I need to redefine a socket method that make impossible to share the same socket port with multiple childs on Win32, so I use this:
# Fix a bug on sockname of IO::Socket, that block the app for multi ch
+ilds with
# the same server opened. Or for a GLOB blessed in a package different
+ than
# IO::Socket, since the socket of the server is blessed to HTTP::Daemo
+n! (Bug saw only on Win32).
if ( $^O =~ /(?:^ms|win|dos)/i ) {
eval(q`
package HTTP::Daemon ;
sub sockname {
#getsockname($_[0]);
getsockname( fileno($_[0]) );
}
`);
}
But I think that the best option is to extend the class (like
robartes said), since this doesn't change the method for all the mod_perl scripts (let's say that you run different scripts inside mod_perl):
package Apache::FakeRequest::ViceRaid;
use base qw(Apache::FakeRequest);
sub lookup_uri { ... }
Graciliano M. P.
"The creativity is the expression of the liberty".