I'm trying to monkey-patch (duck-punch :-) a LWP::UserAgent
instance, like so:
sub _user_agent_get_basic_credentials_patch {
return ($username, $password);
}
my $agent = LWP::UserAgent->new();
$agent->get_basic_credentials = _user_agent_get_basic_credentials_patch;
This isn't the right syntax -- it yields:
Can't modify non-lvalue subroutine
call at [module] line [lineno].
As I recall (from Programming Perl), dispatch lookup is performed dynamically based on the blessed package (ref($agent)
, I believe), so I'm not sure how instance monkey patching would even work without affecting the blessed package.
I know that I can subclass the UserAgent
, but I would prefer the more concise monkey-patched approach. Consenting adults and what have you. ;-)
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…