Strange things are occurring at compile time
David Cantrell
david at cantrell.org.uk
Wed Feb 29 17:00:59 GMT 2012
I've got some strange things going on in my code, and it's DOING MY 'EAD
IN.
In a parent class I have:
sub MODIFY_CODE_ATTRIBUTES {
my ($package, $subref, @attrs) = @_;
use Data::Dumper;local $Data::Dumper::Indent=1;
warn("storing attribs for $subref: ".join(", ", @attrs)."\n");
$attrs{ refaddr $subref } = \@attrs;
return;
}
and then in my class:
my $wibble = sub :Something :AnotherThing {
... long subroutine body ...
}
warn("defined $wibble\n");
As it compiles, it wibbles about storing the attribs, with a stringified
coderef. Then at runtime it warn()s that it has defined something *with
a different coderef*:
storing attribs for CODE(0x55f5528): Something, AnotherThing
defined CODE(0x54245c8)
but if I comment out the subroutine body I get the same code-ref twice.
Am I going mad here? I've already checked the obvious things - yes, my
code compiles *and runs* properly without any of this attribute nonsense
so there's no missing braces or anything; there are no eval { blocks }
or 'use's in the subroutine I'm defining that might Dick About With
Things at compile-time.
My apologies for the off-topic post. Let me rehabilitate myself by
offering FREE BOOZE at tomorrow's social to anyone who can help me.
--
David Cantrell | top google result for "topless karaoke murders"
You don't need to spam good porn
More information about the london.pm
mailing list