#!/usr/bin/perl
use strict;
use warnings;
use Devel::Peek();
BEGIN {
sub bar;
print STDERR "\nDumping " . \&bar . " in BEGIN.\n";
Devel::Peek::Dump(\&bar);
}
use Attribute::Handlers;
use attributes;
sub Lion : ATTR {
print "\ngroaarr!\n";
}
sub bar : Lion method {
print "pling.\n";
}
print STDERR "\nDumping " . \&bar . " after attr assignment.\n";
Devel::Peek::Dump(\&bar);
Output:
Dumping CODE(0x97ad654) in BEGIN.
SV = RV(0x97c32c0) at 0x97a3c40
REFCNT = 1
FLAGS = (TEMP,ROK)
RV = 0x97ad654
SV = PVCV(0x97aff40) at 0x97ad654
REFCNT = 2
FLAGS = ()
IV = 0
NV = 0
COMP_STASH = 0x976fb50 "main"
ROOT = 0x0
XSUB = 0x0
XSUBANY = 0
GVGV::GV = 0x97b92ec "main" :: "bar"
FILE = "attr2.pl"
DEPTH = 0
FLAGS = 0x0
OUTSIDE_SEQ = 205
PADLIST = 0x97b92d4
PADNAME = 0x97936f0(0x0) PAD = 0x979366c(0x97781b0)
OUTSIDE = 0x9770774 (UNIQUE)
groaarr!
Dumping CODE(0x97ad654) after attr assignment.
SV = RV(0x97c3304) at 0x976fc28
REFCNT = 1
FLAGS = (TEMP,ROK)
RV = 0x97ad654
SV = PVCV(0x97aff40) at 0x97ad654
REFCNT = 2
FLAGS = (METHOD)
IV = 0
NV = 0
COMP_STASH = 0x976fb50 "main"
START = 0x97adc90 ===> 4079
ROOT = 0x97ac540
XSUB = 0x0
XSUBANY = 0
GVGV::GV = 0x97b92ec "main" :: "bar"
FILE = "attr2.pl"
DEPTH = 0
FLAGS = 0x40
OUTSIDE_SEQ = 333
PADLIST = 0x97df7e0
PADNAME = 0x97bffbc(0x9777fc0) PAD = 0x97df798(0x97e1150)
OUTSIDE = 0x976fdf0 (MAIN)
Note the changed PVCV. |