| Filename | /usr/lib/x86_64-linux-gnu/perl5/5.20/Template/Base.pm |
| Statements | Executed 72 statements in 1.31ms |
| Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
|---|---|---|---|---|---|
| 1 | 1 | 1 | 1.95ms | 3.15ms | Template::Base::BEGIN@24 |
| 7 | 7 | 3 | 138µs | 17.4ms | Template::Base::new (recurses: max depth 3, inclusive time 30.4ms) |
| 1 | 1 | 1 | 24µs | 33µs | Template::Base::BEGIN@85 |
| 1 | 1 | 1 | 16µs | 24µs | Template::Base::BEGIN@22 |
| 1 | 1 | 1 | 15µs | 20µs | Template::Base::BEGIN@23 |
| 1 | 1 | 1 | 13µs | 26µs | Template::Base::BEGIN@44 |
| 1 | 1 | 1 | 12µs | 21µs | Template::Base::BEGIN@137 |
| 1 | 1 | 1 | 12µs | 36µs | Template::Base::BEGIN@45 |
| 0 | 0 | 0 | 0s | 0s | Template::Base::_init |
| 0 | 0 | 0 | 0s | 0s | Template::Base::debug |
| 0 | 0 | 0 | 0s | 0s | Template::Base::error |
| 0 | 0 | 0 | 0s | 0s | Template::Base::module_version |
| Line | State ments |
Time on line |
Calls | Time in subs |
Code |
|---|---|---|---|---|---|
| 1 | #============================================================= -*-perl-*- | ||||
| 2 | # | ||||
| 3 | # Template::Base | ||||
| 4 | # | ||||
| 5 | # DESCRIPTION | ||||
| 6 | # Base class module implementing common functionality for various other | ||||
| 7 | # Template Toolkit modules. | ||||
| 8 | # | ||||
| 9 | # AUTHOR | ||||
| 10 | # Andy Wardley <abw@wardley.org> | ||||
| 11 | # | ||||
| 12 | # COPYRIGHT | ||||
| 13 | # Copyright (C) 1996-2007 Andy Wardley. All Rights Reserved. | ||||
| 14 | # | ||||
| 15 | # This module is free software; you can redistribute it and/or | ||||
| 16 | # modify it under the same terms as Perl itself. | ||||
| 17 | # | ||||
| 18 | #======================================================================== | ||||
| 19 | |||||
| 20 | package Template::Base; | ||||
| 21 | |||||
| 22 | 2 | 40µs | 2 | 31µs | # spent 24µs (16+8) within Template::Base::BEGIN@22 which was called:
# once (16µs+8µs) by base::import at line 22 # spent 24µs making 1 call to Template::Base::BEGIN@22
# spent 8µs making 1 call to strict::import |
| 23 | 2 | 42µs | 2 | 25µs | # spent 20µs (15+5) within Template::Base::BEGIN@23 which was called:
# once (15µs+5µs) by base::import at line 23 # spent 20µs making 1 call to Template::Base::BEGIN@23
# spent 5µs making 1 call to warnings::import |
| 24 | 2 | 290µs | 2 | 3.18ms | # spent 3.15ms (1.95+1.20) within Template::Base::BEGIN@24 which was called:
# once (1.95ms+1.20ms) by base::import at line 24 # spent 3.15ms making 1 call to Template::Base::BEGIN@24
# spent 28µs making 1 call to Exporter::import |
| 25 | |||||
| 26 | 1 | 300ns | our $VERSION = 2.78; | ||
| 27 | |||||
| 28 | |||||
| 29 | #------------------------------------------------------------------------ | ||||
| 30 | # new(\%params) | ||||
| 31 | # | ||||
| 32 | # General purpose constructor method which expects a hash reference of | ||||
| 33 | # configuration parameters, or a list of name => value pairs which are | ||||
| 34 | # folded into a hash. Blesses a hash into an object and calls its | ||||
| 35 | # _init() method, passing the parameter hash reference. Returns a new | ||||
| 36 | # object derived from Template::Base, or undef on error. | ||||
| 37 | #------------------------------------------------------------------------ | ||||
| 38 | |||||
| 39 | # spent 17.4ms (138µs+17.3) within Template::Base::new which was called 7 times, avg 2.49ms/call:
# once (19µs+17.4ms) by C4::Templates::new at line 64 of C4/Templates.pm
# once (29µs+7µs) by Template::Parser::new at line 162 of Template/Parser.pm
# once (18µs+-18µs) by Template::Config::filters at line 159 of Template/Config.pm
# once (14µs+-14µs) by Template::Config::provider at line 121 of Template/Config.pm
# once (16µs+-16µs) by Template::Config::plugins at line 140 of Template/Config.pm
# once (28µs+-28µs) by Template::Config::context at line 213 of Template/Config.pm
# once (14µs+-14µs) by Template::Config::service at line 231 of Template/Config.pm | ||||
| 40 | 7 | 4µs | my $class = shift; | ||
| 41 | 7 | 2µs | my ($argnames, @args, $arg, $cfg); | ||
| 42 | # $class->error(''); # always clear package $ERROR var? | ||||
| 43 | |||||
| 44 | 9 | 52µs | 2 | 38µs | # spent 26µs (13+12) within Template::Base::BEGIN@44 which was called:
# once (13µs+12µs) by base::import at line 44 # spent 26µs making 1 call to Template::Base::BEGIN@44
# spent 12µs making 1 call to strict::unimport |
| 45 | 2 | 348µs | 2 | 61µs | # spent 36µs (12+25) within Template::Base::BEGIN@45 which was called:
# once (12µs+25µs) by base::import at line 45 # spent 36µs making 1 call to Template::Base::BEGIN@45
# spent 25µs making 1 call to warnings::unimport |
| 46 | 7 | 30µs | $argnames = \@{"$class\::BASEARGS"} || [ ]; | ||
| 47 | } | ||||
| 48 | |||||
| 49 | # shift off all mandatory args, returning error if undefined or null | ||||
| 50 | 7 | 8µs | foreach $arg (@$argnames) { | ||
| 51 | return $class->error("no $arg specified") | ||||
| 52 | unless ($cfg = shift); | ||||
| 53 | push(@args, $cfg); | ||||
| 54 | } | ||||
| 55 | |||||
| 56 | # fold all remaining args into a hash, or use provided hash ref | ||||
| 57 | 7 | 12µs | $cfg = defined $_[0] && ref($_[0]) eq 'HASH' ? shift : { @_ }; | ||
| 58 | |||||
| 59 | my $self = bless { | ||||
| 60 | 7 | 18µs | (map { ($_ => shift @args) } @$argnames), | ||
| 61 | _ERROR => '', | ||||
| 62 | DEBUG => 0, | ||||
| 63 | }, $class; | ||||
| 64 | |||||
| 65 | 7 | 48µs | 7 | 47.6ms | return $self->_init($cfg) ? $self : $class->error($self->error); # spent 17.4ms making 1 call to Template::_init
# spent 17.3ms making 1 call to Template::Service::_init
# spent 12.9ms making 1 call to Template::Context::_init
# spent 37µs making 1 call to Template::Provider::_init
# spent 19µs making 1 call to Template::Plugins::_init
# spent 7µs making 1 call to Template::Filters::_init
# spent 7µs making 1 call to Template::Directive::_init |
| 66 | } | ||||
| 67 | |||||
| 68 | |||||
| 69 | #------------------------------------------------------------------------ | ||||
| 70 | # error() | ||||
| 71 | # error($msg, ...) | ||||
| 72 | # | ||||
| 73 | # May be called as a class or object method to set or retrieve the | ||||
| 74 | # package variable $ERROR (class method) or internal member | ||||
| 75 | # $self->{ _ERROR } (object method). The presence of parameters indicates | ||||
| 76 | # that the error value should be set. Undef is then returned. In the | ||||
| 77 | # abscence of parameters, the current error value is returned. | ||||
| 78 | #------------------------------------------------------------------------ | ||||
| 79 | |||||
| 80 | sub error { | ||||
| 81 | my $self = shift; | ||||
| 82 | my $errvar; | ||||
| 83 | |||||
| 84 | { | ||||
| 85 | 2 | 317µs | 2 | 42µs | # spent 33µs (24+9) within Template::Base::BEGIN@85 which was called:
# once (24µs+9µs) by base::import at line 85 # spent 33µs making 1 call to Template::Base::BEGIN@85
# spent 9µs making 1 call to strict::unimport |
| 86 | $errvar = ref $self ? \$self->{ _ERROR } : \${"$self\::ERROR"}; | ||||
| 87 | } | ||||
| 88 | if (@_) { | ||||
| 89 | $$errvar = ref($_[0]) ? shift : join('', @_); | ||||
| 90 | return undef; | ||||
| 91 | } | ||||
| 92 | else { | ||||
| 93 | return $$errvar; | ||||
| 94 | } | ||||
| 95 | } | ||||
| 96 | |||||
| 97 | |||||
| 98 | #------------------------------------------------------------------------ | ||||
| 99 | # _init() | ||||
| 100 | # | ||||
| 101 | # Initialisation method called by the new() constructor and passing a | ||||
| 102 | # reference to a hash array containing any configuration items specified | ||||
| 103 | # as constructor arguments. Should return $self on success or undef on | ||||
| 104 | # error, via a call to the error() method to set the error message. | ||||
| 105 | #------------------------------------------------------------------------ | ||||
| 106 | |||||
| 107 | sub _init { | ||||
| 108 | my ($self, $config) = @_; | ||||
| 109 | return $self; | ||||
| 110 | } | ||||
| 111 | |||||
| 112 | |||||
| 113 | sub debug { | ||||
| 114 | my $self = shift; | ||||
| 115 | my $msg = join('', @_); | ||||
| 116 | my ($pkg, $file, $line) = caller(); | ||||
| 117 | |||||
| 118 | unless ($msg =~ /\n$/) { | ||||
| 119 | $msg .= ($self->{ DEBUG } & Template::Constants::DEBUG_CALLER) | ||||
| 120 | ? " at $file line $line\n" | ||||
| 121 | : "\n"; | ||||
| 122 | } | ||||
| 123 | |||||
| 124 | print STDERR "[$pkg] $msg"; | ||||
| 125 | } | ||||
| 126 | |||||
| 127 | |||||
| 128 | #------------------------------------------------------------------------ | ||||
| 129 | # module_version() | ||||
| 130 | # | ||||
| 131 | # Returns the current version number. | ||||
| 132 | #------------------------------------------------------------------------ | ||||
| 133 | |||||
| 134 | sub module_version { | ||||
| 135 | my $self = shift; | ||||
| 136 | my $class = ref $self || $self; | ||||
| 137 | 2 | 93µs | 2 | 31µs | # spent 21µs (12+9) within Template::Base::BEGIN@137 which was called:
# once (12µs+9µs) by base::import at line 137 # spent 21µs making 1 call to Template::Base::BEGIN@137
# spent 9µs making 1 call to strict::unimport |
| 138 | return ${"${class}::VERSION"}; | ||||
| 139 | } | ||||
| 140 | |||||
| 141 | |||||
| 142 | 1 | 3µs | 1; | ||
| 143 | |||||
| 144 | __END__ |