There may be some Devel::* modules or some other trickery that could prevent inlining from the outside, but I'm currently unaware of any such modules, though I would be interested to learn about such things.
A relatively simple solution would be to tie AnyEvent::DNS stash, so that the definition of DOMAIN_PORT could be replaced by a custom one:
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
use Data::Dumper;
use Tie::Hash;
package Tie::Hash::Mine {
BEGIN { our @ISA = qw(Tie::StdHash) };
sub STORE {
warn "Setting AnyEvent::DNS::$_[1]";
$_[0]->SUPER::STORE($_[1],
($_[1] eq 'DOMAIN_PORT') ? sub () { 1053 }
+ : $_[2])
}
};
BEGIN {
tie %AnyEvent::DNS::, 'Tie::Hash::Mine';
}
#use AnyEvent::DNS; <-- uncommenting this results in a segmentation fa
+ult!
BEGIN {
package AnyEvent::DNS {
sub ONE () { 1 }
sub DOMAIN_PORT () { 53 }
}
}
say Dumper \%AnyEvent::DNS::;
say Dumper tied(%AnyEvent::DNS::);
... unfortunately, it seems that tieing a stash doesn't work at all :-(