← Index
NYTProf Performance Profile   « line view »
For /Users/timbo/perl5/perlbrew/perls/perl-5.18.2/bin/perlcritic
  Run on Sat Mar 19 22:12:22 2016
Reported on Sat Mar 19 22:14:10 2016

Filename/Users/timbo/perl5/perlbrew/perls/perl-5.18.2/lib/5.18.2/base.pm
StatementsExecuted 6239 statements in 13.6ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
23023023020.6ms37.3msbase::::importbase::import (recurses: max depth 2, inclusive time 5.02ms)
23111667µs667µsbase::::has_fieldsbase::has_fields
23111493µs493µsbase::::has_attrbase::has_attr
11111µs22µsbase::::BEGIN@3base::BEGIN@3
1117µs29µsbase::::BEGIN@4base::BEGIN@4
0000s0sbase::::__ANON__[:48]base::__ANON__[:48]
0000s0sbase::::__ANON__[:55]base::__ANON__[:55]
0000s0sbase::::get_attrbase::get_attr
0000s0sbase::::inherit_fieldsbase::inherit_fields
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package base;
2
3223µs232µ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
use strict 'vars';
# spent 22µs making 1 call to base::BEGIN@3 # spent 10µs making 1 call to strict::import
42681µs251µ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
use vars qw($VERSION);
# spent 29µs making 1 call to base::BEGIN@4 # spent 22µs making 1 call to vars::import
51600ns$VERSION = '2.18';
6110µs$VERSION = eval $VERSION;
# spent 2µs executing statements in string eval
7
8# constant.pm is slow
9sub SUCCESS () { 1 }
10
11sub PUBLIC () { 2**0 }
12sub PRIVATE () { 2**1 }
13sub INHERITED () { 2**2 }
14sub PROTECTED () { 2**3 }
15
16
171500nsmy $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
sub has_fields {
2023195µs my($base) = shift;
21231174µs my $fglob = ${"$base\::"}{FIELDS};
22231623µ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
sub has_attr {
2623156µs my($proto) = shift;
2723167µs my($class) = ref $proto || $proto;
28231486µs return exists $Fattr->{$class};
29}
30
31sub get_attr {
32 $Fattr->{$_[0]} = [1] unless $Fattr->{$_[0]};
33 return $Fattr->{$_[0]};
34}
35
361700nsif ($] < 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}
50else {
51 *get_fields = sub {
52 # Shut up a possible typo warning.
53 () = \%{$_[0].'::FIELDS'};
54 return \%{$_[0].'::FIELDS'};
55 }
5612µ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
sub import {
5923081µs my $class = shift;
60
6123064µs return SUCCESS unless @_;
62
63 # List of base classes from which we will inherit %FIELDS.
6423022µs my $fields_base;
65
66230102µs my $inheritor = caller(0);
67
6823025µs my @bases;
69230128µs foreach my $base (@_) {
7023149µs if ( $inheritor eq $base ) {
71 warn "Class '$inheritor' tried to inherit from itself\n";
72 }
73
742312.20ms232416µ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 {
7846250µs my $sigdie;
79 {
80462345µs local $SIG{__DIE__};
812313.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.
8423125µs die if $@ && $@ !~ /^Can't locate .*? at \(eval /;
85231449µs unless (%{"$base\::"}) {
86 require Carp;
87 local $" = " ";
88 Carp::croak(<<ERROR);
89Base 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).
92ERROR
93 }
94231477µs $sigdie = $SIG{__DIE__} || undef;
95 }
96 # Make sure a global $SIG{__DIE__} makes it out of the localization.
9723153µs $SIG{__DIE__} = $sigdie if defined $sigdie;
98 }
99231124µs push @bases, $base;
100
101231736µs4621.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.
1122301.86ms push @{"$inheritor\::ISA"}, @bases;
113
114230932µs if( defined $fields_base ) {
115 inherit_fields($inheritor, $fields_base);
116 }
117}
118
119
120sub 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!
135This will cause problems. Be sure you use base BEFORE declaring fields.
136END
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
16713µs1;
168
169__END__