Filename | /Users/timbo/perl5/perlbrew/perls/perl-5.18.2/lib/5.18.2/base.pm |
Statements | Executed 6239 statements in 13.6ms |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
230 | 230 | 230 | 20.6ms | 37.3ms | import (recurses: max depth 2, inclusive time 5.02ms) | base::
231 | 1 | 1 | 667µs | 667µs | has_fields | base::
231 | 1 | 1 | 493µs | 493µs | has_attr | base::
1 | 1 | 1 | 11µs | 22µs | BEGIN@3 | base::
1 | 1 | 1 | 7µs | 29µs | BEGIN@4 | base::
0 | 0 | 0 | 0s | 0s | __ANON__[:48] | base::
0 | 0 | 0 | 0s | 0s | __ANON__[:55] | base::
0 | 0 | 0 | 0s | 0s | get_attr | base::
0 | 0 | 0 | 0s | 0s | inherit_fields | base::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | package base; | ||||
2 | |||||
3 | 2 | 23µs | 2 | 32µs | # spent 22µs (11+11) within base::BEGIN@3 which was called:
# once (11µs+11µs) by Encode::BEGIN@13 at line 3 # spent 22µs making 1 call to base::BEGIN@3
# spent 10µs making 1 call to strict::import |
4 | 2 | 681µs | 2 | 51µs | # spent 29µs (7+22) within base::BEGIN@4 which was called:
# once (7µs+22µs) by Encode::BEGIN@13 at line 4 # spent 29µs making 1 call to base::BEGIN@4
# spent 22µs making 1 call to vars::import |
5 | 1 | 600ns | $VERSION = '2.18'; | ||
6 | 1 | 10µs | $VERSION = eval $VERSION; # spent 2µs executing statements in string eval | ||
7 | |||||
8 | # constant.pm is slow | ||||
9 | sub SUCCESS () { 1 } | ||||
10 | |||||
11 | sub PUBLIC () { 2**0 } | ||||
12 | sub PRIVATE () { 2**1 } | ||||
13 | sub INHERITED () { 2**2 } | ||||
14 | sub PROTECTED () { 2**3 } | ||||
15 | |||||
16 | |||||
17 | 1 | 500ns | my $Fattr = \%fields::attr; | ||
18 | |||||
19 | # spent 667µs within base::has_fields which was called 231 times, avg 3µs/call:
# 231 times (667µs+0s) by base::import at line 101, avg 3µs/call | ||||
20 | 231 | 95µs | my($base) = shift; | ||
21 | 231 | 174µs | my $fglob = ${"$base\::"}{FIELDS}; | ||
22 | 231 | 623µs | return( ($fglob && 'GLOB' eq ref($fglob) && *$fglob{HASH}) ? 1 : 0 ); | ||
23 | } | ||||
24 | |||||
25 | # spent 493µs within base::has_attr which was called 231 times, avg 2µs/call:
# 231 times (493µs+0s) by base::import at line 101, avg 2µs/call | ||||
26 | 231 | 56µs | my($proto) = shift; | ||
27 | 231 | 67µs | my($class) = ref $proto || $proto; | ||
28 | 231 | 486µs | return exists $Fattr->{$class}; | ||
29 | } | ||||
30 | |||||
31 | sub get_attr { | ||||
32 | $Fattr->{$_[0]} = [1] unless $Fattr->{$_[0]}; | ||||
33 | return $Fattr->{$_[0]}; | ||||
34 | } | ||||
35 | |||||
36 | 1 | 700ns | if ($] < 5.009) { | ||
37 | *get_fields = sub { | ||||
38 | # Shut up a possible typo warning. | ||||
39 | () = \%{$_[0].'::FIELDS'}; | ||||
40 | my $f = \%{$_[0].'::FIELDS'}; | ||||
41 | |||||
42 | # should be centralized in fields? perhaps | ||||
43 | # fields::mk_FIELDS_be_OK. Peh. As long as %{ $package . '::FIELDS' } | ||||
44 | # is used here anyway, it doesn't matter. | ||||
45 | bless $f, 'pseudohash' if (ref($f) ne 'pseudohash'); | ||||
46 | |||||
47 | return $f; | ||||
48 | } | ||||
49 | } | ||||
50 | else { | ||||
51 | *get_fields = sub { | ||||
52 | # Shut up a possible typo warning. | ||||
53 | () = \%{$_[0].'::FIELDS'}; | ||||
54 | return \%{$_[0].'::FIELDS'}; | ||||
55 | } | ||||
56 | 1 | 2µs | } | ||
57 | |||||
58 | # spent 37.3ms (20.6+16.8) within base::import which was called 230 times, avg 162µs/call:
# once (1.87ms+9.48ms) by Perl::Critic::Policy::Variables::ProhibitAugmentedAssignmentInDeclaration::BEGIN@17 at line 17 of Perl/Critic/Policy/Variables/ProhibitAugmentedAssignmentInDeclaration.pm
# once (1.46ms+2.81ms) by PPIx::Regexp::Token::Delimiter::BEGIN@36 at line 36 of PPIx/Regexp/Token/Delimiter.pm
# once (1.22ms+2.94ms) by PPIx::Regexp::BEGIN@88 at line 88 of PPIx/Regexp.pm
# once (427µs+608µs) by Perl::Critic::Exception::Configuration::Option::Policy::ParameterValue::BEGIN@3 at line 3 of (eval 54)[Exception/Class.pm:177]
# once (230µs+795µs) by Perl::Critic::Exception::Configuration::Option::Global::ParameterValue::BEGIN@3 at line 3 of (eval 48)[Exception/Class.pm:177]
# once (297µs+667µs) by Perl::Critic::Exception::Fatal::Generic::BEGIN@3 at line 3 of (eval 29)[Exception/Class.pm:177]
# once (623µs+170µs) by PPIx::Regexp::Token::Backreference::BEGIN@35 at line 35 of PPIx/Regexp/Token/Backreference.pm
# once (644µs+133µs) by PPIx::Regexp::Token::GroupType::Assertion::BEGIN@35 at line 35 of PPIx/Regexp/Token/GroupType/Assertion.pm
# once (218µs+274µs) by Perl::Critic::Exception::Configuration::Generic::BEGIN@3 at line 3 of (eval 42)[Exception/Class.pm:177]
# once (390µs+71µs) by PPIx::Regexp::Lexer::BEGIN@39 at line 39 of PPIx/Regexp/Lexer.pm
# once (322µs+114µs) by PPIx::Regexp::Token::Unmatched::BEGIN@40 at line 40 of PPIx/Regexp/Token/Unmatched.pm
# once (207µs+119µs) by PPIx::Regexp::Token::CharClass::POSIX::BEGIN@42 at line 42 of PPIx/Regexp/Token/CharClass/POSIX.pm
# once (126µs+6µs) by PPIx::Utilities::Node::BEGIN@19 at line 19 of PPIx/Utilities/Node.pm
# once (103µs+18µs) by PPIx::Regexp::Token::GroupType::Modifier::BEGIN@37 at line 37 of PPIx/Regexp/Token/GroupType/Modifier.pm
# once (86µs+11µs) by Perl::Critic::Exception::Configuration::Option::Policy::ExtraParameter::BEGIN@3 at line 3 of (eval 58)[Exception/Class.pm:177]
# once (83µs+11µs) by Perl::Critic::Exception::Fatal::Internal::BEGIN@3 at line 3 of (eval 40)[Exception/Class.pm:177]
# once (78µs+12µs) by Perl::Critic::Policy::Miscellanea::ProhibitUselessNoCritic::BEGIN@19 at line 19 of Perl/Critic/Policy/Miscellanea/ProhibitUselessNoCritic.pm
# once (78µs+11µs) by Perl::Critic::Policy::InputOutput::ProhibitBacktickOperators::BEGIN@17 at line 17 of Perl/Critic/Policy/InputOutput/ProhibitBacktickOperators.pm
# once (74µs+10µs) by Perl::Critic::Policy::InputOutput::ProhibitBarewordFileHandles::BEGIN@16 at line 16 of Perl/Critic/Policy/InputOutput/ProhibitBarewordFileHandles.pm
# once (69µs+11µs) by Perl::Critic::Policy::InputOutput::ProhibitExplicitStdin::BEGIN@17 at line 17 of Perl/Critic/Policy/InputOutput/ProhibitExplicitStdin.pm
# once (68µs+9µs) by PPIx::Regexp::Token::GroupType::Subexpression::BEGIN@35 at line 35 of PPIx/Regexp/Token/GroupType/Subexpression.pm
# once (64µs+13µs) by Exception::Class::Base::BEGIN@10 at line 10 of Exception/Class/Base.pm
# once (69µs+7µs) by PPIx::Regexp::Token::Interpolation::BEGIN@35 at line 35 of PPIx/Regexp/Token/Interpolation.pm
# once (67µs+9µs) by Perl::Critic::Policy::InputOutput::ProhibitOneArgSelect::BEGIN@16 at line 16 of Perl/Critic/Policy/InputOutput/ProhibitOneArgSelect.pm
# once (66µs+9µs) by Perl::Critic::Exception::Configuration::NonExistentPolicy::BEGIN@3 at line 3 of (eval 62)[Exception/Class.pm:177]
# once (66µs+9µs) by PPIx::Regexp::Token::GroupType::BranchReset::BEGIN@35 at line 35 of PPIx/Regexp/Token/GroupType/BranchReset.pm
# once (64µs+9µs) by PPIx::Regexp::Token::GroupType::Switch::BEGIN@36 at line 36 of PPIx/Regexp/Token/GroupType/Switch.pm
# once (66µs+7µs) by Perl::Critic::Policy::ValuesAndExpressions::ProhibitImplicitNewlines::BEGIN@16 at line 16 of Perl/Critic/Policy/ValuesAndExpressions/ProhibitImplicitNewlines.pm
# once (64µs+8µs) by PPIx::Regexp::Token::GroupType::Code::BEGIN@42 at line 42 of PPIx/Regexp/Token/GroupType/Code.pm
# once (63µs+9µs) by Perl::Critic::Exception::Fatal::PolicyDefinition::BEGIN@3 at line 3 of (eval 60)[Exception/Class.pm:177]
# once (61µs+10µs) by Perl::Critic::Policy::Documentation::PodSpelling::BEGIN@32 at line 32 of Perl/Critic/Policy/Documentation/PodSpelling.pm
# once (61µs+8µs) by Perl::Critic::Policy::InputOutput::ProhibitInteractiveTest::BEGIN@16 at line 16 of Perl/Critic/Policy/InputOutput/ProhibitInteractiveTest.pm
# once (62µs+7µs) by PPIx::Regexp::Token::CharClass::POSIX::Unknown::BEGIN@8 at line 8 of PPIx/Regexp/Token/CharClass/POSIX/Unknown.pm
# once (62µs+7µs) by Perl::Critic::Policy::ValuesAndExpressions::RequireConstantVersion::BEGIN@27 at line 27 of Perl/Critic/Policy/ValuesAndExpressions/RequireConstantVersion.pm
# once (60µs+8µs) by PPIx::Regexp::Token::Greediness::BEGIN@36 at line 36 of PPIx/Regexp/Token/Greediness.pm
# once (60µs+8µs) by PPIx::Regexp::Token::GroupType::NamedCapture::BEGIN@40 at line 40 of PPIx/Regexp/Token/GroupType/NamedCapture.pm
# once (60µs+7µs) by Perl::Critic::Policy::BuiltinFunctions::ProhibitStringySplit::BEGIN@16 at line 16 of Perl/Critic/Policy/BuiltinFunctions/ProhibitStringySplit.pm
# once (58µs+9µs) by Perl::Critic::Policy::InputOutput::ProhibitJoinedReadline::BEGIN@17 at line 17 of Perl/Critic/Policy/InputOutput/ProhibitJoinedReadline.pm
# once (60µs+7µs) by Perl::Critic::Policy::Modules::ProhibitEvilModules::BEGIN@22 at line 22 of Perl/Critic/Policy/Modules/ProhibitEvilModules.pm
# once (58µs+7µs) by PPIx::Regexp::Token::Operator::BEGIN@36 at line 36 of PPIx/Regexp/Token/Operator.pm
# once (56µs+9µs) by Perl::Critic::Policy::CodeLayout::RequireTidyCode::BEGIN@21 at line 21 of Perl/Critic/Policy/CodeLayout/RequireTidyCode.pm
# once (57µs+8µs) by Perl::Critic::Policy::ControlStructures::ProhibitLabelsWithSpecialBlockNames::BEGIN@17 at line 17 of Perl/Critic/Policy/ControlStructures/ProhibitLabelsWithSpecialBlockNames.pm
# once (58µs+6µs) by Perl::Critic::Policy::ErrorHandling::RequireCarping::BEGIN@19 at line 19 of Perl/Critic/Policy/ErrorHandling/RequireCarping.pm
# once (57µs+7µs) by PPIx::Regexp::Token::Literal::BEGIN@35 at line 35 of PPIx/Regexp/Token/Literal.pm
# once (57µs+7µs) by Perl::Critic::Exception::Configuration::Option::Global::ExtraParameter::BEGIN@3 at line 3 of (eval 384)[Exception/Class.pm:177]
# once (54µs+9µs) by PPIx::Utilities::Statement::BEGIN@21 at line 21 of PPIx/Utilities/Statement.pm
# once (56µs+7µs) by Perl::Critic::Policy::InputOutput::ProhibitReadlineInForLoop::BEGIN@18 at line 18 of Perl/Critic/Policy/InputOutput/ProhibitReadlineInForLoop.pm
# once (56µs+7µs) by Encode::BEGIN@13 at line 13 of Encode.pm
# once (56µs+7µs) by Perl::Critic::Policy::CodeLayout::ProhibitQuotedWordLists::BEGIN@17 at line 17 of Perl/Critic/Policy/CodeLayout/ProhibitQuotedWordLists.pm
# once (47µs+15µs) by PPIx::Regexp::Structure::Switch::BEGIN@35 at line 35 of PPIx/Regexp/Structure/Switch.pm
# once (56µs+6µs) by Perl::Critic::Policy::BuiltinFunctions::ProhibitComplexMappings::BEGIN@16 at line 16 of Perl/Critic/Policy/BuiltinFunctions/ProhibitComplexMappings.pm
# once (54µs+8µs) by Perl::Critic::Policy::ValuesAndExpressions::RequireNumberSeparators::BEGIN@16 at line 16 of Perl/Critic/Policy/ValuesAndExpressions/RequireNumberSeparators.pm
# once (55µs+6µs) by PPIx::Regexp::Token::Assertion::BEGIN@37 at line 37 of PPIx/Regexp/Token/Assertion.pm
# once (54µs+7µs) by PPIx::Regexp::Token::Quantifier::BEGIN@36 at line 36 of PPIx/Regexp/Token/Quantifier.pm
# once (52µs+9µs) by Perl::Critic::Policy::ValuesAndExpressions::RequireInterpolationOfMetachars::BEGIN@19 at line 19 of Perl/Critic/Policy/ValuesAndExpressions/RequireInterpolationOfMetachars.pm
# once (54µs+6µs) by Perl::Critic::Policy::Documentation::RequirePodLinksIncludeText::BEGIN@18 at line 18 of Perl/Critic/Policy/Documentation/RequirePodLinksIncludeText.pm
# once (53µs+7µs) by Perl::Critic::Policy::ControlStructures::ProhibitNegativeExpressionsInUnlessAndUntilConditions::BEGIN@18 at line 18 of Perl/Critic/Policy/ControlStructures/ProhibitNegativeExpressionsInUnlessAndUntilConditions.pm
# once (53µs+7µs) by Perl::Critic::Policy::RegularExpressions::ProhibitUnusedCapture::BEGIN@25 at line 25 of Perl/Critic/Policy/RegularExpressions/ProhibitUnusedCapture.pm
# once (52µs+7µs) by Perl::Critic::Policy::CodeLayout::ProhibitTrailingWhitespace::BEGIN@21 at line 21 of Perl/Critic/Policy/CodeLayout/ProhibitTrailingWhitespace.pm
# once (51µs+7µs) by Perl::Critic::Policy::ControlStructures::ProhibitUnlessBlocks::BEGIN@16 at line 16 of Perl/Critic/Policy/ControlStructures/ProhibitUnlessBlocks.pm
# once (50µs+7µs) by Perl::Critic::Policy::InputOutput::ProhibitTwoArgOpen::BEGIN@19 at line 19 of Perl/Critic/Policy/InputOutput/ProhibitTwoArgOpen.pm
# once (51µs+6µs) by Perl::Critic::Policy::InputOutput::RequireCheckedOpen::BEGIN@16 at line 16 of Perl/Critic/Policy/InputOutput/RequireCheckedOpen.pm
# once (51µs+6µs) by Perl::Critic::Policy::RegularExpressions::ProhibitComplexRegexes::BEGIN@21 at line 21 of Perl/Critic/Policy/RegularExpressions/ProhibitComplexRegexes.pm
# once (51µs+6µs) by Perl::Critic::Policy::BuiltinFunctions::RequireGlobFunction::BEGIN@16 at line 16 of Perl/Critic/Policy/BuiltinFunctions/RequireGlobFunction.pm
# once (51µs+6µs) by Perl::Critic::Policy::BuiltinFunctions::RequireSimpleSortBlock::BEGIN@16 at line 16 of Perl/Critic/Policy/BuiltinFunctions/RequireSimpleSortBlock.pm
# once (50µs+6µs) by Perl::Critic::Policy::ValuesAndExpressions::RequireUpperCaseHeredocTerminator::BEGIN@16 at line 16 of Perl/Critic/Policy/ValuesAndExpressions/RequireUpperCaseHeredocTerminator.pm
# once (50µs+7µs) by Perl::Critic::Policy::Variables::ProhibitConditionalDeclarations::BEGIN@16 at line 16 of Perl/Critic/Policy/Variables/ProhibitConditionalDeclarations.pm
# once (50µs+6µs) by Perl::Critic::Policy::Modules::ProhibitExcessMainComplexity::BEGIN@18 at line 18 of Perl/Critic/Policy/Modules/ProhibitExcessMainComplexity.pm
# once (50µs+7µs) by Perl::Critic::Policy::Modules::RequireBarewordIncludes::BEGIN@16 at line 16 of Perl/Critic/Policy/Modules/RequireBarewordIncludes.pm
# once (50µs+6µs) by PPIx::Regexp::Structure::Replacement::BEGIN@39 at line 39 of PPIx/Regexp/Structure/Replacement.pm
# once (50µs+6µs) by Perl::Critic::Policy::Miscellanea::ProhibitFormats::BEGIN@16 at line 16 of Perl/Critic/Policy/Miscellanea/ProhibitFormats.pm
# once (50µs+6µs) by Perl::Critic::Policy::ControlStructures::ProhibitUnreachableCode::BEGIN@16 at line 16 of Perl/Critic/Policy/ControlStructures/ProhibitUnreachableCode.pm
# once (50µs+6µs) by Perl::Critic::Policy::CodeLayout::RequireTrailingCommas::BEGIN@16 at line 16 of Perl/Critic/Policy/CodeLayout/RequireTrailingCommas.pm
# once (50µs+6µs) by Perl::Critic::Policy::CodeLayout::RequireConsistentNewlines::BEGIN@18 at line 18 of Perl/Critic/Policy/CodeLayout/RequireConsistentNewlines.pm
# once (49µs+7µs) by Perl::Critic::Policy::ValuesAndExpressions::ProhibitConstantPragma::BEGIN@16 at line 16 of Perl/Critic/Policy/ValuesAndExpressions/ProhibitConstantPragma.pm
# once (50µs+6µs) by Perl::Critic::Policy::ControlStructures::ProhibitDeepNests::BEGIN@16 at line 16 of Perl/Critic/Policy/ControlStructures/ProhibitDeepNests.pm
# once (49µs+6µs) by Perl::Critic::Policy::Variables::ProhibitMatchVars::BEGIN@16 at line 16 of Perl/Critic/Policy/Variables/ProhibitMatchVars.pm
# once (50µs+6µs) by Perl::Critic::Policy::BuiltinFunctions::RequireBlockGrep::BEGIN@20 at line 20 of Perl/Critic/Policy/BuiltinFunctions/RequireBlockGrep.pm
# once (49µs+6µs) by Perl::Critic::Policy::Modules::RequireNoMatchVarsWithUseEnglish::BEGIN@17 at line 17 of Perl/Critic/Policy/Modules/RequireNoMatchVarsWithUseEnglish.pm
# once (49µs+6µs) by Perl::Critic::Policy::BuiltinFunctions::ProhibitReverseSortBlock::BEGIN@16 at line 16 of Perl/Critic/Policy/BuiltinFunctions/ProhibitReverseSortBlock.pm
# once (49µs+6µs) by PPIx::Regexp::Token::Backtrack::BEGIN@34 at line 34 of PPIx/Regexp/Token/Backtrack.pm
# once (49µs+6µs) by PPIx::Regexp::Structure::Quantifier::BEGIN@35 at line 35 of PPIx/Regexp/Structure/Quantifier.pm
# once (48µs+7µs) by Perl::Critic::Policy::NamingConventions::Capitalization::BEGIN@33 at line 33 of Perl/Critic/Policy/NamingConventions/Capitalization.pm
# once (49µs+6µs) by Perl::Critic::Policy::RegularExpressions::RequireDotMatchAnything::BEGIN@18 at line 18 of Perl/Critic/Policy/RegularExpressions/RequireDotMatchAnything.pm
# once (48µs+6µs) by Perl::Critic::Policy::ValuesAndExpressions::ProhibitEmptyQuotes::BEGIN@16 at line 16 of Perl/Critic/Policy/ValuesAndExpressions/ProhibitEmptyQuotes.pm
# once (49µs+6µs) by Perl::Critic::Policy::InputOutput::RequireEncodingWithUTF8Layer::BEGIN@19 at line 19 of Perl/Critic/Policy/InputOutput/RequireEncodingWithUTF8Layer.pm
# once (48µs+6µs) by Perl::Critic::Policy::ControlStructures::ProhibitCascadingIfElse::BEGIN@17 at line 17 of Perl/Critic/Policy/ControlStructures/ProhibitCascadingIfElse.pm
# once (48µs+6µs) by PPIx::Regexp::Structure::Assertion::BEGIN@35 at line 35 of PPIx/Regexp/Structure/Assertion.pm
# once (48µs+6µs) by Perl::Critic::Exception::AggregateConfiguration::BEGIN@3 at line 3 of (eval 46)[Exception/Class.pm:177]
# once (48µs+6µs) by Perl::Critic::Policy::Variables::ProhibitPunctuationVars::BEGIN@22 at line 22 of Perl/Critic/Policy/Variables/ProhibitPunctuationVars.pm
# once (48µs+6µs) by Perl::Critic::Policy::Subroutines::ProhibitNestedSubs::BEGIN@16 at line 16 of Perl/Critic/Policy/Subroutines/ProhibitNestedSubs.pm
# once (48µs+7µs) by Perl::Critic::Utils::POD::ParseInteriorSequence::BEGIN@14 at line 14 of Perl/Critic/Utils/POD/ParseInteriorSequence.pm
# once (47µs+7µs) by Pod::Spell::BEGIN@8 at line 8 of Pod/Spell.pm
# once (48µs+6µs) by Perl::Critic::Policy::Subroutines::ProhibitExcessComplexity::BEGIN@18 at line 18 of Perl/Critic/Policy/Subroutines/ProhibitExcessComplexity.pm
# once (48µs+6µs) by Perl::Critic::Policy::RegularExpressions::ProhibitFixedStringMatches::BEGIN@20 at line 20 of Perl/Critic/Policy/RegularExpressions/ProhibitFixedStringMatches.pm
# once (48µs+6µs) by Perl::Critic::Policy::BuiltinFunctions::ProhibitUniversalCan::BEGIN@16 at line 16 of Perl/Critic/Policy/BuiltinFunctions/ProhibitUniversalCan.pm
# once (47µs+7µs) by PPIx::Utilities::Exception::Bug::BEGIN@3 at line 3 of (eval 386)[Exception/Class.pm:177]
# once (47µs+7µs) by Perl::Critic::Policy::TestingAndDebugging::ProhibitNoStrict::BEGIN@18 at line 18 of Perl/Critic/Policy/TestingAndDebugging/ProhibitNoStrict.pm
# once (48µs+6µs) by Perl::Critic::Policy::Documentation::RequirePackageMatchesPodName::BEGIN@18 at line 18 of Perl/Critic/Policy/Documentation/RequirePackageMatchesPodName.pm
# once (48µs+6µs) by Perl::Critic::Policy::RegularExpressions::RequireExtendedFormatting::BEGIN@17 at line 17 of Perl/Critic/Policy/RegularExpressions/RequireExtendedFormatting.pm
# once (48µs+6µs) by Perl::Critic::Policy::ValuesAndExpressions::ProhibitLeadingZeros::BEGIN@17 at line 17 of Perl/Critic/Policy/ValuesAndExpressions/ProhibitLeadingZeros.pm
# once (48µs+6µs) by Perl::Critic::Policy::Subroutines::ProhibitSubroutinePrototypes::BEGIN@16 at line 16 of Perl/Critic/Policy/Subroutines/ProhibitSubroutinePrototypes.pm
# once (48µs+6µs) by PPIx::Regexp::Token::Unknown::BEGIN@38 at line 38 of PPIx/Regexp/Token/Unknown.pm
# once (48µs+6µs) by Perl::Critic::Policy::BuiltinFunctions::ProhibitVoidMap::BEGIN@16 at line 16 of Perl/Critic/Policy/BuiltinFunctions/ProhibitVoidMap.pm
# once (47µs+6µs) by PPIx::Regexp::Token::Condition::BEGIN@36 at line 36 of PPIx/Regexp/Token/Condition.pm
# once (47µs+6µs) by Perl::Critic::Policy::BuiltinFunctions::ProhibitStringyEval::BEGIN@19 at line 19 of Perl/Critic/Policy/BuiltinFunctions/ProhibitStringyEval.pm
# once (47µs+6µs) by Perl::Critic::Policy::RegularExpressions::RequireBracesForMultiline::BEGIN@20 at line 20 of Perl/Critic/Policy/RegularExpressions/RequireBracesForMultiline.pm
# once (47µs+6µs) by Perl::Critic::Policy::ValuesAndExpressions::ProhibitMagicNumbers::BEGIN@18 at line 18 of Perl/Critic/Policy/ValuesAndExpressions/ProhibitMagicNumbers.pm
# once (47µs+6µs) by Perl::Critic::Policy::RegularExpressions::ProhibitSingleCharAlternation::BEGIN@20 at line 20 of Perl/Critic/Policy/RegularExpressions/ProhibitSingleCharAlternation.pm
# once (47µs+6µs) by Perl::Critic::Policy::BuiltinFunctions::ProhibitLvalueSubstr::BEGIN@17 at line 17 of Perl/Critic/Policy/BuiltinFunctions/ProhibitLvalueSubstr.pm
# once (47µs+6µs) by Perl::Critic::Policy::Subroutines::ProhibitExplicitReturnUndef::BEGIN@16 at line 16 of Perl/Critic/Policy/Subroutines/ProhibitExplicitReturnUndef.pm
# once (47µs+6µs) by Perl::Critic::Policy::Modules::ProhibitConditionalUseStatements::BEGIN@16 at line 16 of Perl/Critic/Policy/Modules/ProhibitConditionalUseStatements.pm
# once (47µs+6µs) by Perl::Critic::Policy::Subroutines::RequireFinalReturn::BEGIN@17 at line 17 of Perl/Critic/Policy/Subroutines/RequireFinalReturn.pm
# once (47µs+6µs) by Perl::Critic::Exception::Parse::BEGIN@3 at line 3 of (eval 35)[Exception/Class.pm:177]
# once (47µs+6µs) by Perl::Critic::Policy::BuiltinFunctions::ProhibitVoidGrep::BEGIN@16 at line 16 of Perl/Critic/Policy/BuiltinFunctions/ProhibitVoidGrep.pm
# once (47µs+6µs) by Perl::Critic::Policy::Modules::RequireEndWithOne::BEGIN@16 at line 16 of Perl/Critic/Policy/Modules/RequireEndWithOne.pm
# once (47µs+6µs) by Perl::Critic::Policy::BuiltinFunctions::RequireBlockMap::BEGIN@16 at line 16 of Perl/Critic/Policy/BuiltinFunctions/RequireBlockMap.pm
# once (47µs+6µs) by Perl::Critic::Policy::RegularExpressions::RequireLineBoundaryMatching::BEGIN@17 at line 17 of Perl/Critic/Policy/RegularExpressions/RequireLineBoundaryMatching.pm
# once (46µs+7µs) by Perl::Critic::Policy::ValuesAndExpressions::RequireQuotedHeredocTerminator::BEGIN@16 at line 16 of Perl/Critic/Policy/ValuesAndExpressions/RequireQuotedHeredocTerminator.pm
# once (47µs+6µs) by Perl::Critic::Policy::Modules::ProhibitMultiplePackages::BEGIN@16 at line 16 of Perl/Critic/Policy/Modules/ProhibitMultiplePackages.pm
# once (47µs+6µs) by Perl::Critic::Policy::Subroutines::ProtectPrivateSubs::BEGIN@21 at line 21 of Perl/Critic/Policy/Subroutines/ProtectPrivateSubs.pm
# once (47µs+6µs) by PPIx::Regexp::Token::Whitespace::BEGIN@38 at line 38 of PPIx/Regexp/Token/Whitespace.pm
# once (47µs+6µs) by Perl::Critic::Policy::Variables::RequireNegativeIndices::BEGIN@16 at line 16 of Perl/Critic/Policy/Variables/RequireNegativeIndices.pm
# once (47µs+6µs) by Perl::Critic::Policy::Variables::ProhibitPerl4PackageNames::BEGIN@16 at line 16 of Perl/Critic/Policy/Variables/ProhibitPerl4PackageNames.pm
# once (47µs+6µs) by Perl::Critic::Policy::ValuesAndExpressions::ProhibitVersionStrings::BEGIN@16 at line 16 of Perl/Critic/Policy/ValuesAndExpressions/ProhibitVersionStrings.pm
# once (47µs+6µs) by Perl::Critic::Policy::ValuesAndExpressions::ProhibitNoisyQuotes::BEGIN@16 at line 16 of Perl/Critic/Policy/ValuesAndExpressions/ProhibitNoisyQuotes.pm
# once (46µs+6µs) by Perl::Critic::Policy::RegularExpressions::ProhibitCaptureWithoutTest::BEGIN@16 at line 16 of Perl/Critic/Policy/RegularExpressions/ProhibitCaptureWithoutTest.pm
# once (46µs+6µs) by PPIx::Regexp::Structure::Capture::BEGIN@36 at line 36 of PPIx/Regexp/Structure/Capture.pm
# once (46µs+6µs) by Perl::Critic::Policy::Objects::ProhibitIndirectSyntax::BEGIN@19 at line 19 of Perl/Critic/Policy/Objects/ProhibitIndirectSyntax.pm
# once (46µs+6µs) by Perl::Critic::Policy::ControlStructures::ProhibitCStyleForLoops::BEGIN@16 at line 16 of Perl/Critic/Policy/ControlStructures/ProhibitCStyleForLoops.pm
# once (47µs+6µs) by PPIx::Regexp::Structure::NamedCapture::BEGIN@42 at line 42 of PPIx/Regexp/Structure/NamedCapture.pm
# once (46µs+6µs) by PPIx::Regexp::Structure::Subexpression::BEGIN@35 at line 35 of PPIx/Regexp/Structure/Subexpression.pm
# once (46µs+6µs) by Perl::Critic::Policy::Variables::ProtectPrivateVars::BEGIN@16 at line 16 of Perl/Critic/Policy/Variables/ProtectPrivateVars.pm
# once (46µs+6µs) by Perl::Critic::Policy::RegularExpressions::ProhibitEscapedMetacharacters::BEGIN@19 at line 19 of Perl/Critic/Policy/RegularExpressions/ProhibitEscapedMetacharacters.pm
# once (46µs+6µs) by PPIx::Regexp::Structure::Code::BEGIN@40 at line 40 of PPIx/Regexp/Structure/Code.pm
# once (46µs+6µs) by Perl::Critic::Policy::Variables::RequireLocalizedPunctuationVars::BEGIN@16 at line 16 of Perl/Critic/Policy/Variables/RequireLocalizedPunctuationVars.pm
# once (46µs+6µs) by Perl::Critic::Policy::ClassHierarchies::ProhibitAutoloading::BEGIN@16 at line 16 of Perl/Critic/Policy/ClassHierarchies/ProhibitAutoloading.pm
# once (46µs+6µs) by Perl::Critic::Policy::Variables::RequireInitializationForLocalVars::BEGIN@16 at line 16 of Perl/Critic/Policy/Variables/RequireInitializationForLocalVars.pm
# once (46µs+6µs) by Perl::Critic::Policy::Subroutines::ProhibitAmpersandSigils::BEGIN@17 at line 17 of Perl/Critic/Policy/Subroutines/ProhibitAmpersandSigils.pm
# once (45µs+7µs) by Perl::Critic::Policy::Variables::ProhibitReusedNames::BEGIN@17 at line 17 of Perl/Critic/Policy/Variables/ProhibitReusedNames.pm
# once (45µs+6µs) by PPIx::Regexp::Structure::Unknown::BEGIN@35 at line 35 of PPIx/Regexp/Structure/Unknown.pm
# once (46µs+6µs) by Perl::Critic::Exception::IO::BEGIN@3 at line 3 of (eval 38)[Exception/Class.pm:177]
# once (46µs+6µs) by PPIx::Regexp::Token::Control::BEGIN@42 at line 42 of PPIx/Regexp/Token/Control.pm
# once (46µs+6µs) by Perl::Critic::Policy::TestingAndDebugging::ProhibitProlongedStrictureOverride::BEGIN@16 at line 16 of Perl/Critic/Policy/TestingAndDebugging/ProhibitProlongedStrictureOverride.pm
# once (45µs+6µs) by Perl::Critic::Policy::ControlStructures::ProhibitMutatingListFunctions::BEGIN@21 at line 21 of Perl/Critic/Policy/ControlStructures/ProhibitMutatingListFunctions.pm
# once (45µs+7µs) by Perl::Critic::Policy::Variables::ProhibitPackageVars::BEGIN@22 at line 22 of Perl/Critic/Policy/Variables/ProhibitPackageVars.pm
# once (45µs+6µs) by Perl::Critic::Policy::ValuesAndExpressions::ProhibitEscapedCharacters::BEGIN@16 at line 16 of Perl/Critic/Policy/ValuesAndExpressions/ProhibitEscapedCharacters.pm
# once (45µs+6µs) by PPIx::Regexp::Node::Range::BEGIN@36 at line 36 of PPIx/Regexp/Node/Range.pm
# once (46µs+6µs) by Devel::InnerPackage::BEGIN@4 at line 4 of Devel/InnerPackage.pm
# once (45µs+6µs) by Perl::Critic::Policy::Modules::RequireVersionVar::BEGIN@18 at line 18 of Perl/Critic/Policy/Modules/RequireVersionVar.pm
# once (45µs+7µs) by Perl::Critic::Policy::TestingAndDebugging::RequireUseWarnings::BEGIN@19 at line 19 of Perl/Critic/Policy/TestingAndDebugging/RequireUseWarnings.pm
# once (45µs+6µs) by PPIx::Regexp::Token::CharClass::Simple::BEGIN@36 at line 36 of PPIx/Regexp/Token/CharClass/Simple.pm
# once (45µs+6µs) by Perl::Critic::Policy::Modules::ProhibitAutomaticExportation::BEGIN@17 at line 17 of Perl/Critic/Policy/Modules/ProhibitAutomaticExportation.pm
# once (46µs+6µs) by Encode::Alias::BEGIN@8 at line 8 of Encode/Alias.pm
# once (46µs+6µs) by PPIx::Regexp::Structure::BEGIN@48 at line 48 of PPIx/Regexp/Structure.pm
# once (45µs+6µs) by PPIx::Regexp::Token::Comment::BEGIN@35 at line 35 of PPIx/Regexp/Token/Comment.pm
# once (45µs+6µs) by Perl::Critic::Policy::Subroutines::ProhibitBuiltinHomonyms::BEGIN@18 at line 18 of Perl/Critic/Policy/Subroutines/ProhibitBuiltinHomonyms.pm
# once (45µs+6µs) by PPIx::Regexp::Structure::Modifier::BEGIN@36 at line 36 of PPIx/Regexp/Structure/Modifier.pm
# once (45µs+6µs) by Perl::Critic::Policy::RegularExpressions::ProhibitUnusualDelimiters::BEGIN@20 at line 20 of Perl/Critic/Policy/RegularExpressions/ProhibitUnusualDelimiters.pm
# once (44µs+7µs) by Perl::Critic::Policy::TestingAndDebugging::ProhibitNoWarnings::BEGIN@19 at line 19 of Perl/Critic/Policy/TestingAndDebugging/ProhibitNoWarnings.pm
# once (45µs+6µs) by Perl::Critic::Policy::ValuesAndExpressions::ProhibitQuotesAsQuotelikeOperatorDelimiters::BEGIN@18 at line 18 of Perl/Critic/Policy/ValuesAndExpressions/ProhibitQuotesAsQuotelikeOperatorDelimiters.pm
# once (45µs+6µs) by Perl::Critic::Policy::TestingAndDebugging::RequireTestLabels::BEGIN@19 at line 19 of Perl/Critic/Policy/TestingAndDebugging/RequireTestLabels.pm
# once (44µs+6µs) by Perl::Critic::Policy::Variables::ProhibitEvilVariables::BEGIN@23 at line 23 of Perl/Critic/Policy/Variables/ProhibitEvilVariables.pm
# once (44µs+6µs) by Perl::Critic::Policy::CodeLayout::ProhibitParensWithBuiltins::BEGIN@20 at line 20 of Perl/Critic/Policy/CodeLayout/ProhibitParensWithBuiltins.pm
# once (44µs+6µs) by Perl::Critic::Policy::ControlStructures::ProhibitPostfixControls::BEGIN@16 at line 16 of Perl/Critic/Policy/ControlStructures/ProhibitPostfixControls.pm
# once (45µs+6µs) by Perl::Critic::Policy::ValuesAndExpressions::ProhibitCommaSeparatedStatements::BEGIN@19 at line 19 of Perl/Critic/Policy/ValuesAndExpressions/ProhibitCommaSeparatedStatements.pm
# once (44µs+7µs) by Perl::Critic::Policy::ValuesAndExpressions::ProhibitInterpolationOfLiterals::BEGIN@18 at line 18 of Perl/Critic/Policy/ValuesAndExpressions/ProhibitInterpolationOfLiterals.pm
# once (44µs+6µs) by Perl::Critic::Policy::InputOutput::RequireBracedFileHandleWithPrint::BEGIN@16 at line 16 of Perl/Critic/Policy/InputOutput/RequireBracedFileHandleWithPrint.pm
# once (45µs+6µs) by PPIx::Regexp::Structure::Main::BEGIN@41 at line 41 of PPIx/Regexp/Structure/Main.pm
# once (44µs+6µs) by Perl::Critic::Policy::BuiltinFunctions::ProhibitSleepViaSelect::BEGIN@16 at line 16 of Perl/Critic/Policy/BuiltinFunctions/ProhibitSleepViaSelect.pm
# once (44µs+6µs) by Perl::Critic::Policy::Documentation::RequirePodAtEnd::BEGIN@18 at line 18 of Perl/Critic/Policy/Documentation/RequirePodAtEnd.pm
# once (44µs+6µs) by Perl::Critic::Policy::InputOutput::RequireCheckedClose::BEGIN@16 at line 16 of Perl/Critic/Policy/InputOutput/RequireCheckedClose.pm
# once (44µs+6µs) by Perl::Critic::Policy::BuiltinFunctions::ProhibitUniversalIsa::BEGIN@16 at line 16 of Perl/Critic/Policy/BuiltinFunctions/ProhibitUniversalIsa.pm
# once (44µs+6µs) by Perl::Critic::Policy::ClassHierarchies::ProhibitOneArgBless::BEGIN@16 at line 16 of Perl/Critic/Policy/ClassHierarchies/ProhibitOneArgBless.pm
# once (44µs+6µs) by Perl::Critic::Policy::Subroutines::ProhibitReturnSort::BEGIN@16 at line 16 of Perl/Critic/Policy/Subroutines/ProhibitReturnSort.pm
# once (44µs+6µs) by Perl::Critic::Policy::ValuesAndExpressions::ProhibitMismatchedOperators::BEGIN@15 at line 15 of Perl/Critic/Policy/ValuesAndExpressions/ProhibitMismatchedOperators.pm
# once (44µs+6µs) by Perl::Critic::Policy::NamingConventions::ProhibitAmbiguousNames::BEGIN@16 at line 16 of Perl/Critic/Policy/NamingConventions/ProhibitAmbiguousNames.pm
# once (44µs+6µs) by Perl::Critic::Policy::ValuesAndExpressions::ProhibitMixedBooleanOperators::BEGIN@16 at line 16 of Perl/Critic/Policy/ValuesAndExpressions/ProhibitMixedBooleanOperators.pm
# once (44µs+6µs) by Perl::Critic::Policy::BuiltinFunctions::ProhibitBooleanGrep::BEGIN@16 at line 16 of Perl/Critic/Policy/BuiltinFunctions/ProhibitBooleanGrep.pm
# once (44µs+6µs) by Perl::Critic::Policy::Miscellanea::ProhibitUnrestrictedNoCritic::BEGIN@16 at line 16 of Perl/Critic/Policy/Miscellanea/ProhibitUnrestrictedNoCritic.pm
# once (44µs+6µs) by Perl::Critic::Policy::Miscellanea::ProhibitTies::BEGIN@16 at line 16 of Perl/Critic/Policy/Miscellanea/ProhibitTies.pm
# once (44µs+6µs) by Perl::Critic::Policy::Variables::ProhibitLocalVars::BEGIN@16 at line 16 of Perl/Critic/Policy/Variables/ProhibitLocalVars.pm
# once (44µs+6µs) by Perl::Critic::Policy::ErrorHandling::RequireCheckingReturnValueOfEval::BEGIN@20 at line 20 of Perl/Critic/Policy/ErrorHandling/RequireCheckingReturnValueOfEval.pm
# once (44µs+6µs) by Perl::Critic::Policy::ClassHierarchies::ProhibitExplicitISA::BEGIN@16 at line 16 of Perl/Critic/Policy/ClassHierarchies/ProhibitExplicitISA.pm
# once (44µs+6µs) by Perl::Critic::Policy::Documentation::RequirePodSections::BEGIN@16 at line 16 of Perl/Critic/Policy/Documentation/RequirePodSections.pm
# once (44µs+6µs) by PPIx::Regexp::Structure::BranchReset::BEGIN@35 at line 35 of PPIx/Regexp/Structure/BranchReset.pm
# once (44µs+6µs) by Perl::Critic::Policy::ValuesAndExpressions::ProhibitSpecialLiteralHeredocTerminator::BEGIN@17 at line 17 of Perl/Critic/Policy/ValuesAndExpressions/ProhibitSpecialLiteralHeredocTerminator.pm
# once (44µs+6µs) by Perl::Critic::Policy::CodeLayout::ProhibitHardTabs::BEGIN@16 at line 16 of Perl/Critic/Policy/CodeLayout/ProhibitHardTabs.pm
# once (44µs+6µs) by Perl::Critic::Policy::InputOutput::RequireCheckedSyscalls::BEGIN@18 at line 18 of Perl/Critic/Policy/InputOutput/RequireCheckedSyscalls.pm
# once (43µs+6µs) by Perl::Critic::Policy::Subroutines::ProhibitUnusedPrivateSubroutines::BEGIN@22 at line 22 of Perl/Critic/Policy/Subroutines/ProhibitUnusedPrivateSubroutines.pm
# once (44µs+6µs) by Perl::Critic::Policy::Variables::RequireLexicalLoopIterators::BEGIN@17 at line 17 of Perl/Critic/Policy/Variables/RequireLexicalLoopIterators.pm
# once (44µs+6µs) by Perl::Critic::Policy::ValuesAndExpressions::ProhibitLongChainsOfMethodCalls::BEGIN@18 at line 18 of Perl/Critic/Policy/ValuesAndExpressions/ProhibitLongChainsOfMethodCalls.pm
# once (44µs+6µs) by Perl::Critic::Policy::TestingAndDebugging::RequireUseStrict::BEGIN@19 at line 19 of Perl/Critic/Policy/TestingAndDebugging/RequireUseStrict.pm
# once (43µs+6µs) by Perl::Critic::Policy::Modules::RequireExplicitPackage::BEGIN@16 at line 16 of Perl/Critic/Policy/Modules/RequireExplicitPackage.pm
# once (43µs+6µs) by Perl::Critic::Policy::ControlStructures::ProhibitUntilBlocks::BEGIN@16 at line 16 of Perl/Critic/Policy/ControlStructures/ProhibitUntilBlocks.pm
# once (43µs+6µs) by Perl::Critic::Policy::Modules::RequireFilenameMatchesPackage::BEGIN@19 at line 19 of Perl/Critic/Policy/Modules/RequireFilenameMatchesPackage.pm
# once (43µs+6µs) by PPIx::Regexp::Structure::CharClass::BEGIN@35 at line 35 of PPIx/Regexp/Structure/CharClass.pm
# once (42µs+7µs) by Perl::Critic::Policy::RegularExpressions::ProhibitEnumeratedClasses::BEGIN@21 at line 21 of Perl/Critic/Policy/RegularExpressions/ProhibitEnumeratedClasses.pm
# once (43µs+6µs) by Perl::Critic::Policy::ValuesAndExpressions::ProhibitComplexVersion::BEGIN@25 at line 25 of Perl/Critic/Policy/ValuesAndExpressions/ProhibitComplexVersion.pm
# once (43µs+6µs) by Perl::Critic::Policy::References::ProhibitDoubleSigils::BEGIN@16 at line 16 of Perl/Critic/Policy/References/ProhibitDoubleSigils.pm
# once (42µs+6µs) by PPIx::Regexp::Token::Code::BEGIN@47 at line 47 of PPIx/Regexp/Token/Code.pm
# once (42µs+6µs) by PPIx::Regexp::Structure::RegexSet::BEGIN@6 at line 6 of PPIx/Regexp/Structure/RegexSet.pm
# once (42µs+6µs) by PPIx::Regexp::Structure::Regexp::BEGIN@37 at line 37 of PPIx/Regexp/Structure/Regexp.pm
# once (42µs+6µs) by Perl::Critic::Policy::Subroutines::ProhibitManyArgs::BEGIN@22 at line 22 of Perl/Critic/Policy/Subroutines/ProhibitManyArgs.pm
# once (43µs+5µs) by String::Format::BEGIN@24 at line 24 of String/Format.pm
# once (42µs+6µs) by Perl::Critic::Policy::InputOutput::RequireBriefOpen::BEGIN@21 at line 21 of Perl/Critic/Policy/InputOutput/RequireBriefOpen.pm
# once (42µs+6µs) by Perl::Critic::Policy::Subroutines::RequireArgUnpacking::BEGIN@25 at line 25 of Perl/Critic/Policy/Subroutines/RequireArgUnpacking.pm
# once (41µs+6µs) by Perl::Critic::Policy::Variables::ProhibitUnusedVariables::BEGIN@20 at line 20 of Perl/Critic/Policy/Variables/ProhibitUnusedVariables.pm
# once (40µs+6µs) by PPIx::Regexp::Tokenizer::BEGIN@6 at line 6 of PPIx/Regexp/Tokenizer.pm
# once (47µs+-47µs) by Perl::Critic::PolicyParameter::Behavior::Boolean::BEGIN@15 at line 15 of Perl/Critic/PolicyParameter/Behavior/Boolean.pm
# once (76µs+-76µs) by PPIx::Regexp::Token::Modifier::BEGIN@84 at line 84 of PPIx/Regexp/Token/Modifier.pm
# once (48µs+-48µs) by PPIx::Regexp::Token::BEGIN@51 at line 51 of PPIx/Regexp/Token.pm
# once (295µs+-295µs) by Perl::Critic::Exception::Configuration::Option::Global::BEGIN@3 at line 3 of (eval 50)[Exception/Class.pm:177]
# once (47µs+-47µs) by Perl::Critic::PolicyParameter::Behavior::StringList::BEGIN@16 at line 16 of Perl/Critic/PolicyParameter/Behavior/StringList.pm
# once (48µs+-48µs) by Perl::Critic::Exception::Configuration::Option::BEGIN@3 at line 3 of (eval 52)[Exception/Class.pm:177]
# once (52µs+-52µs) by Perl::Critic::Exception::Configuration::BEGIN@3 at line 3 of (eval 44)[Exception/Class.pm:177]
# once (86µs+-86µs) by Perl::Critic::Exception::Configuration::Option::Policy::BEGIN@3 at line 3 of (eval 56)[Exception/Class.pm:177]
# once (42µs+-42µs) by PPIx::Regexp::Token::Reference::BEGIN@40 at line 40 of PPIx/Regexp/Token/Reference.pm
# once (59µs+-59µs) by PPIx::Regexp::Token::GroupType::BEGIN@44 at line 44 of PPIx/Regexp/Token/GroupType.pm
# once (83µs+-83µs) by PPIx::Regexp::Token::Recursion::BEGIN@34 at line 34 of PPIx/Regexp/Token/Recursion.pm
# once (75µs+-75µs) by PPIx::Regexp::Token::Structure::BEGIN@38 at line 38 of PPIx/Regexp/Token/Structure.pm
# once (45µs+-45µs) by PPIx::Regexp::Constant::BEGIN@8 at line 8 of PPIx/Regexp/Constant.pm
# once (53µs+-53µs) by PPIx::Regexp::Token::CharClass::BEGIN@40 at line 40 of PPIx/Regexp/Token/CharClass.pm
# once (51µs+-51µs) by Perl::Critic::Exception::BEGIN@3 at line 3 of (eval 33)[Exception/Class.pm:177]
# once (44µs+-44µs) by Perl::Critic::PolicyParameter::Behavior::Enumeration::BEGIN@18 at line 18 of Perl/Critic/PolicyParameter/Behavior/Enumeration.pm
# once (258µs+-258µs) by Perl::Critic::Exception::Fatal::BEGIN@3 at line 3 of (eval 31)[Exception/Class.pm:177]
# once (1.19ms+-1.19ms) by PPIx::Regexp::Node::BEGIN@37 at line 37 of PPIx/Regexp/Node.pm
# once (47µs+-47µs) by Perl::Critic::PolicyParameter::Behavior::String::BEGIN@16 at line 16 of Perl/Critic/PolicyParameter/Behavior/String.pm
# once (47µs+-47µs) by Perl::Critic::PolicyParameter::Behavior::Integer::BEGIN@16 at line 16 of Perl/Critic/PolicyParameter/Behavior/Integer.pm
# once (49µs+-49µs) by PPIx::Regexp::Util::BEGIN@11 at line 11 of PPIx/Regexp/Util.pm | ||||
59 | 230 | 81µs | my $class = shift; | ||
60 | |||||
61 | 230 | 64µs | return SUCCESS unless @_; | ||
62 | |||||
63 | # List of base classes from which we will inherit %FIELDS. | ||||
64 | 230 | 22µs | my $fields_base; | ||
65 | |||||
66 | 230 | 102µs | my $inheritor = caller(0); | ||
67 | |||||
68 | 230 | 25µs | my @bases; | ||
69 | 230 | 128µs | foreach my $base (@_) { | ||
70 | 231 | 49µs | if ( $inheritor eq $base ) { | ||
71 | warn "Class '$inheritor' tried to inherit from itself\n"; | ||||
72 | } | ||||
73 | |||||
74 | 231 | 2.20ms | 232 | 416µs | next if grep $_->isa($base), ($inheritor, @bases); # spent 416µs making 232 calls to UNIVERSAL::isa, avg 2µs/call |
75 | |||||
76 | # Following blocks help isolate $SIG{__DIE__} changes | ||||
77 | { | ||||
78 | 462 | 50µs | my $sigdie; | ||
79 | { | ||||
80 | 462 | 345µs | local $SIG{__DIE__}; | ||
81 | 231 | 3.62ms | eval "require $base"; # spent 359µs executing statements in 141 string evals (merged)
# spent 117µs executing statements in 17 string evals (merged)
# spent 116µs executing statements in 7 string evals (merged)
# spent 104µs executing statements in string eval
# spent 85µs executing statements in 2 string evals (merged)
# spent 84µs executing statements in 3 string evals (merged)
# spent 83µs executing statements in 2 string evals (merged)
# spent 81µs executing statements in 2 string evals (merged)
# spent 75µs executing statements in 5 string evals (merged)
# spent 74µs executing statements in 3 string evals (merged)
# spent 73µs executing statements in 2 string evals (merged)
# spent 72µs executing statements in 2 string evals (merged)
# spent 71µs executing statements in 3 string evals (merged)
# spent 71µs executing statements in 2 string evals (merged)
# spent 68µs executing statements in 3 string evals (merged)
# spent 22µs executing statements in 12 string evals (merged)
# spent 16µs executing statements in 8 string evals (merged)
# spent 10µs executing statements in 5 string evals (merged)
# spent 4µs executing statements in 2 string evals (merged)
# spent 4µs executing statements in 2 string evals (merged)
# spent 4µs executing statements in 2 string evals (merged)
# spent 2µs executing statements in string eval
# spent 2µs executing statements in string eval
# spent 2µs executing statements in string eval
# spent 2µs executing statements in string eval
# spent 2µs executing statements in string eval | ||
82 | # Only ignore "Can't locate" errors from our eval require. | ||||
83 | # Other fatal errors (syntax etc) must be reported. | ||||
84 | 231 | 25µs | die if $@ && $@ !~ /^Can't locate .*? at \(eval /; | ||
85 | 231 | 449µs | unless (%{"$base\::"}) { | ||
86 | require Carp; | ||||
87 | local $" = " "; | ||||
88 | Carp::croak(<<ERROR); | ||||
89 | Base class package "$base" is empty. | ||||
90 | (Perhaps you need to 'use' the module which defines that package first, | ||||
91 | or make that module available in \@INC (\@INC contains: @INC). | ||||
92 | ERROR | ||||
93 | } | ||||
94 | 231 | 477µs | $sigdie = $SIG{__DIE__} || undef; | ||
95 | } | ||||
96 | # Make sure a global $SIG{__DIE__} makes it out of the localization. | ||||
97 | 231 | 53µs | $SIG{__DIE__} = $sigdie if defined $sigdie; | ||
98 | } | ||||
99 | 231 | 124µs | push @bases, $base; | ||
100 | |||||
101 | 231 | 736µs | 462 | 1.16ms | if ( has_fields($base) || has_attr($base) ) { # spent 667µs making 231 calls to base::has_fields, avg 3µs/call
# spent 493µs making 231 calls to base::has_attr, avg 2µs/call |
102 | # No multiple fields inheritance *suck* | ||||
103 | if ($fields_base) { | ||||
104 | require Carp; | ||||
105 | Carp::croak("Can't multiply inherit fields"); | ||||
106 | } else { | ||||
107 | $fields_base = $base; | ||||
108 | } | ||||
109 | } | ||||
110 | } | ||||
111 | # Save this until the end so it's all or nothing if the above loop croaks. | ||||
112 | 230 | 1.86ms | push @{"$inheritor\::ISA"}, @bases; | ||
113 | |||||
114 | 230 | 932µs | if( defined $fields_base ) { | ||
115 | inherit_fields($inheritor, $fields_base); | ||||
116 | } | ||||
117 | } | ||||
118 | |||||
119 | |||||
120 | sub inherit_fields { | ||||
121 | my($derived, $base) = @_; | ||||
122 | |||||
123 | return SUCCESS unless $base; | ||||
124 | |||||
125 | my $battr = get_attr($base); | ||||
126 | my $dattr = get_attr($derived); | ||||
127 | my $dfields = get_fields($derived); | ||||
128 | my $bfields = get_fields($base); | ||||
129 | |||||
130 | $dattr->[0] = @$battr; | ||||
131 | |||||
132 | if( keys %$dfields ) { | ||||
133 | warn <<"END"; | ||||
134 | $derived is inheriting from $base but already has its own fields! | ||||
135 | This will cause problems. Be sure you use base BEFORE declaring fields. | ||||
136 | END | ||||
137 | |||||
138 | } | ||||
139 | |||||
140 | # Iterate through the base's fields adding all the non-private | ||||
141 | # ones to the derived class. Hang on to the original attribute | ||||
142 | # (Public, Private, etc...) and add Inherited. | ||||
143 | # This is all too complicated to do efficiently with add_fields(). | ||||
144 | while (my($k,$v) = each %$bfields) { | ||||
145 | my $fno; | ||||
146 | if ($fno = $dfields->{$k} and $fno != $v) { | ||||
147 | require Carp; | ||||
148 | Carp::croak ("Inherited fields can't override existing fields"); | ||||
149 | } | ||||
150 | |||||
151 | if( $battr->[$v] & PRIVATE ) { | ||||
152 | $dattr->[$v] = PRIVATE | INHERITED; | ||||
153 | } | ||||
154 | else { | ||||
155 | $dattr->[$v] = INHERITED | $battr->[$v]; | ||||
156 | $dfields->{$k} = $v; | ||||
157 | } | ||||
158 | } | ||||
159 | |||||
160 | foreach my $idx (1..$#{$battr}) { | ||||
161 | next if defined $dattr->[$idx]; | ||||
162 | $dattr->[$idx] = $battr->[$idx] & INHERITED; | ||||
163 | } | ||||
164 | } | ||||
165 | |||||
166 | |||||
167 | 1 | 3µs | 1; | ||
168 | |||||
169 | __END__ |