line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package Attribute::Memoize; |
2
|
|
|
|
|
|
|
|
3
|
4
|
|
|
4
|
|
20
|
use warnings; |
|
4
|
|
|
|
|
9
|
|
|
4
|
|
|
|
|
111
|
|
4
|
4
|
|
|
4
|
|
20
|
use strict; |
|
4
|
|
|
|
|
8
|
|
|
4
|
|
|
|
|
108
|
|
5
|
4
|
|
|
4
|
|
19
|
use Attribute::Handlers; |
|
4
|
|
|
|
|
7
|
|
|
4
|
|
|
|
|
22
|
|
6
|
|
|
|
|
|
|
|
7
|
|
|
|
|
|
|
our $VERSION = sprintf "%d.%02d", q$Revision: 1.2 $ =~ /(\d+)/g; |
8
|
|
|
|
|
|
|
|
9
|
|
|
|
|
|
|
sub UNIVERSAL::Memoize :ATTR(CODE) { |
10
|
3
|
|
|
3
|
0
|
8017
|
my ($pkg, $symbol, $options) = @_[0,1,4]; |
11
|
3
|
100
|
33
|
|
|
27
|
$options = [ $options || () ] unless ref $options eq 'ARRAY'; |
12
|
3
|
|
|
|
|
1153
|
require Memoize; |
13
|
3
|
|
|
|
|
3507
|
Memoize::memoize($pkg . '::' . *{$symbol}{NAME}, @$options); |
|
3
|
|
|
|
|
17
|
|
14
|
4
|
|
|
4
|
|
773
|
} |
|
4
|
|
|
|
|
12
|
|
|
4
|
|
|
|
|
26
|
|
15
|
|
|
|
|
|
|
|
16
|
|
|
|
|
|
|
"Rosebud"; # for MARCEL's sake, not 1 -- dankogai |
17
|
|
|
|
|
|
|
|
18
|
|
|
|
|
|
|
__END__ |