← 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/site_perl/5.18.2/PPI/Util.pm
StatementsExecuted 1026 statements in 188ms
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
47818211531274ms274msPPI::Util::::TRUEPPI::Util::TRUE (xsub)
14411170ms170msPPI::Util::::CORE:readlinePPI::Util::CORE:readline (opcode)
144117.26ms187msPPI::Util::::_slurpPPI::Util::_slurp
144116.77ms6.77msPPI::Util::::CORE:openPPI::Util::CORE:open (opcode)
144113.00ms3.00msPPI::Util::::CORE:closePPI::Util::CORE:close (opcode)
111570µs900µsPPI::Util::::BEGIN@7PPI::Util::BEGIN@7
11117µs58µsPPI::Util::::BEGIN@8PPI::Util::BEGIN@8
11111µs23µsPPI::Util::::BEGIN@5PPI::Util::BEGIN@5
1119µs57µsPPI::Util::::BEGIN@18PPI::Util::BEGIN@18
1119µs9µsPPI::Util::::BEGIN@11PPI::Util::BEGIN@11
1117µs39µsPPI::Util::::BEGIN@22PPI::Util::BEGIN@22
1116µs43µsPPI::Util::::BEGIN@10PPI::Util::BEGIN@10
1113µs3µsPPI::Util::::BEGIN@6PPI::Util::BEGIN@6
0000s0sPPI::Util::::_DocumentPPI::Util::_Document
0000s0sPPI::Util::::md5hexPPI::Util::md5hex
0000s0sPPI::Util::::md5hex_filePPI::Util::md5hex_file
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package PPI::Util;
2
3# Provides some common utility functions that can be imported
4
5219µs235µs
# spent 23µs (11+12) within PPI::Util::BEGIN@5 which was called: # once (11µs+12µs) by PPI::Element::BEGIN@29 at line 5
use strict;
# spent 23µs making 1 call to PPI::Util::BEGIN@5 # spent 12µs making 1 call to strict::import
6216µs13µs
# spent 3µs within PPI::Util::BEGIN@6 which was called: # once (3µs+0s) by PPI::Element::BEGIN@29 at line 6
use Exporter ();
# spent 3µs making 1 call to PPI::Util::BEGIN@6
7294µs1900µs
# spent 900µs (570+330) within PPI::Util::BEGIN@7 which was called: # once (570µs+330µs) by PPI::Element::BEGIN@29 at line 7
use Digest::MD5 ();
# spent 900µs making 1 call to PPI::Util::BEGIN@7
8224µs298µs
# spent 58µs (17+41) within PPI::Util::BEGIN@8 which was called: # once (17µs+41µs) by PPI::Element::BEGIN@29 at line 8
use Params::Util qw{_INSTANCE _SCALAR0 _ARRAY0};
# spent 58µs making 1 call to PPI::Util::BEGIN@8 # spent 41µs making 1 call to Exporter::import
9
10234µs279µs
# spent 43µs (6+36) within PPI::Util::BEGIN@10 which was called: # once (6µs+36µs) by PPI::Element::BEGIN@29 at line 10
use vars qw{$VERSION @ISA @EXPORT_OK};
# spent 43µs making 1 call to PPI::Util::BEGIN@10 # spent 36µs making 1 call to vars::import
11
# spent 9µs within PPI::Util::BEGIN@11 which was called: # once (9µs+0s) by PPI::Element::BEGIN@29 at line 15
BEGIN {
121300ns $VERSION = '1.215';
1315µs @ISA = 'Exporter';
1414µs @EXPORT_OK = qw{_Document _slurp};
15129µs19µs}
# spent 9µs making 1 call to PPI::Util::BEGIN@11
16
17# Alarms are used to catch unexpectedly slow and complex documents
18229µs2105µs
# spent 57µs (9+48) within PPI::Util::BEGIN@18 which was called: # once (9µs+48µs) by PPI::Element::BEGIN@29 at line 18
use constant HAVE_ALARM => ! ( $^O eq 'MSWin32' or $^O eq 'cygwin' );
# spent 57µs making 1 call to PPI::Util::BEGIN@18 # spent 48µs making 1 call to constant::import
19
20# 5.8.7 was the first version to resolve the notorious
21# "unicode length caching" bug. See RT #FIXME
222255µs271µs
# spent 39µs (7+32) within PPI::Util::BEGIN@22 which was called: # once (7µs+32µs) by PPI::Element::BEGIN@29 at line 22
use constant HAVE_UNICODE => !! ( $] >= 5.008007 );
# spent 39µs making 1 call to PPI::Util::BEGIN@22 # spent 32µs making 1 call to constant::import
23
24# Common reusable true and false functions
25# This makes it easy to upgrade many places in PPI::XS
26sub TRUE () { 1 }
27sub FALSE () { '' }
28
- -
33#####################################################################
34# Functions
35
36# Allows a sub that takes a L<PPI::Document> to handle the full range
37# of different things, including file names, SCALAR source, etc.
38sub _Document {
39 shift if @_ > 1;
40 return undef unless defined $_[0];
41 require PPI::Document;
42 return PPI::Document->new(shift) unless ref $_[0];
43 return PPI::Document->new(shift) if _SCALAR0($_[0]);
44 return PPI::Document->new(shift) if _ARRAY0($_[0]);
45 return shift if _INSTANCE($_[0], 'PPI::Document');
46 return undef;
47}
48
49# Provide a simple _slurp implementation
50
# spent 187ms (7.26+180) within PPI::Util::_slurp which was called 144 times, avg 1.30ms/call: # 144 times (7.26ms+180ms) by PPI::Tokenizer::new at line 153 of PPI/Tokenizer.pm, avg 1.30ms/call
sub _slurp {
5114471µs my $file = shift;
52144480µs local $/ = undef;
53144200µs local *FILE;
541447.50ms1446.77ms open( FILE, '<', $file ) or return "open($file) failed: $!";
# spent 6.77ms making 144 calls to PPI::Util::CORE:open, avg 47µs/call
55144173ms144170ms my $source = <FILE>;
# spent 170ms making 144 calls to PPI::Util::CORE:readline, avg 1.18ms/call
561444.08ms1443.00ms close( FILE ) or return "close($file) failed: $!";
# spent 3.00ms making 144 calls to PPI::Util::CORE:close, avg 21µs/call
571442.63ms return \$source;
58}
59
60# Provides a version of Digest::MD5's md5hex that explicitly
61# works on the unix-newlined version of the content.
62sub md5hex {
63 my $string = shift;
64 $string =~ s/(?:\015{1,2}\012|\015|\012)/\015/gs;
65 Digest::MD5::md5_hex($string);
66}
67
68# As above but slurps and calculates the id for a file by name
69sub md5hex_file {
70 my $file = shift;
71 my $content = _slurp($file);
72 return undef unless ref $content;
73 $$content =~ s/(?:\015{1,2}\012|\015|\012)/\n/gs;
74 md5hex($$content);
75}
76
7712µs1;
 
# spent 3.00ms within PPI::Util::CORE:close which was called 144 times, avg 21µs/call: # 144 times (3.00ms+0s) by PPI::Util::_slurp at line 56, avg 21µs/call
sub PPI::Util::CORE:close; # opcode
# spent 6.77ms within PPI::Util::CORE:open which was called 144 times, avg 47µs/call: # 144 times (6.77ms+0s) by PPI::Util::_slurp at line 54, avg 47µs/call
sub PPI::Util::CORE:open; # opcode
# spent 170ms within PPI::Util::CORE:readline which was called 144 times, avg 1.18ms/call: # 144 times (170ms+0s) by PPI::Util::_slurp at line 55, avg 1.18ms/call
sub PPI::Util::CORE:readline; # opcode
# spent 274ms within PPI::Util::TRUE which was called 478182 times, avg 574ns/call: # 105472 times (57.6ms+0s) by PPI::Element::__eq at line 1089 of PPI/Element.pm, avg 546ns/call # 82384 times (48.3ms+0s) by PPI::Tokenizer::get_token at line 266 of PPI/Tokenizer.pm, avg 587ns/call # 30261 times (16.2ms+0s) by PPI::Element::snext_sibling at line 364 of PPI/Element.pm, avg 536ns/call # 23156 times (13.2ms+0s) by PPI::Structure::tokens at line 278 of PPI/Structure.pm, avg 569ns/call # 22718 times (14.1ms+0s) by PPI::Node::find at line 393 of PPI/Node.pm, avg 619ns/call # 22718 times (12.3ms+0s) by PPI::Node::find at line 395 of PPI/Node.pm, avg 539ns/call # 16620 times (9.35ms+0s) by PPI::Lexer::_get_token at line 1413 of PPI/Lexer.pm, avg 563ns/call # 14319 times (7.56ms+0s) by Perl::Critic::Utils::is_hash_key at line 708 of Perl/Critic/Utils.pm, avg 528ns/call # 14319 times (5.71ms+0s) by Perl::Critic::Utils::_is_followed_by_parens at line 733 of Perl/Critic/Utils.pm, avg 399ns/call # 14000 times (8.12ms+0s) by Perl::Critic::Utils::_is_followed_by_parens at line 735 of Perl/Critic/Utils.pm, avg 580ns/call # 11841 times (8.35ms+0s) by PPI::Tokenizer::get_token at line 287 of PPI/Tokenizer.pm, avg 705ns/call # 11584 times (6.81ms+0s) by Perl::Critic::Utils::is_hash_key at line 715 of Perl/Critic/Utils.pm, avg 588ns/call # 11584 times (6.48ms+0s) by Perl::Critic::Utils::is_hash_key at line 717 of Perl/Critic/Utils.pm, avg 559ns/call # 11260 times (6.65ms+0s) by Perl::Critic::Utils::is_hash_key at line 723 of Perl/Critic/Utils.pm, avg 591ns/call # 10451 times (6.54ms+0s) by PPI::Statement::new at line 203 of PPI/Statement.pm, avg 626ns/call # 9610 times (5.22ms+0s) by PPI::Node::location at line 684 of PPI/Node.pm, avg 543ns/call # 9549 times (6.50ms+0s) by PPI::Token::Whitespace::__TOKENIZER__on_line_end at line 417 of PPI/Token/Whitespace.pm, avg 681ns/call # 6803 times (4.48ms+0s) by PPI::Lexer::_add_element at line 1446 of PPI/Lexer.pm, avg 659ns/call # 2953 times (1.89ms+0s) by PPI::Lexer::_round at line 991 of PPI/Lexer.pm, avg 641ns/call # 2743 times (1.53ms+0s) by PPI::Token::_QuoteEngine::__TOKENIZER__on_char at line 48 of PPI/Token/_QuoteEngine.pm, avg 558ns/call # 2355 times (1.58ms+0s) by PPI::Statement::Compound::type at line 194 of PPI/Statement/Compound.pm, avg 673ns/call # 2244 times (1.31ms+0s) by PPI::Structure::content at line 295 of PPI/Structure.pm, avg 586ns/call # 2244 times (1.27ms+0s) by PPI::Structure::content at line 291 of PPI/Structure.pm, avg 564ns/call # 2212 times (1.49ms+0s) by PPI::Lexer::_curly at line 1190 of PPI/Lexer.pm, avg 674ns/call # 2212 times (1.28ms+0s) by PPI::Lexer::_curly at line 1193 of PPI/Lexer.pm, avg 581ns/call # 2099 times (1.25ms+0s) by Perl::Critic::Policy::Subroutines::ProhibitExplicitReturnUndef::violates at line 40 of Perl/Critic/Policy/Subroutines/ProhibitExplicitReturnUndef.pm, avg 594ns/call # 2099 times (1.24ms+0s) by Perl::Critic::Policy::Subroutines::ProhibitReturnSort::violates at line 40 of Perl/Critic/Policy/Subroutines/ProhibitReturnSort.pm, avg 592ns/call # 2044 times (1.16ms+0s) by PPI::Lexer::_statement at line 500 of PPI/Lexer.pm, avg 567ns/call # 1999 times (1.52ms+0s) by PPI::Token::Word::__TOKENIZER__literal at line 557 of PPI/Token/Word.pm, avg 762ns/call # 1962 times (1.20ms+0s) by PPI::Lexer::_statement at line 542 of PPI/Lexer.pm, avg 613ns/call # 1682 times (1.33ms+0s) by PPI::Token::_QuoteEngine::Simple::new at line 22 of PPI/Token/_QuoteEngine/Simple.pm, avg 788ns/call # 1682 times (890µs+0s) by PPI::Token::_QuoteEngine::Simple::_fill at line 31 of PPI/Token/_QuoteEngine/Simple.pm, avg 529ns/call # 1410 times (916µs+0s) by PPI::Statement::Include::module at line 125 of PPI/Statement/Include.pm, avg 649ns/call # 1299 times (797µs+0s) by PPI::Statement::Variable::type at line 73 of PPI/Statement/Variable.pm, avg 613ns/call # 1268 times (808µs+0s) by PPI::Statement::Include::type at line 92 of PPI/Statement/Include.pm, avg 637ns/call # 1266 times (798µs+0s) by PPI::Statement::Include::version at line 266 of PPI/Statement/Include.pm, avg 631ns/call # 1252 times (890µs+0s) by PPI::Token::Whitespace::__TOKENIZER__on_char at line 213 of PPI/Token/Whitespace.pm, avg 711ns/call # 1159 times (614µs+0s) by PPI::Lexer::_curly at line 1244 of PPI/Lexer.pm, avg 530ns/call # 1061 times (738µs+0s) by PPI::Token::_QuoteEngine::Full::new at line 149 of PPI/Token/_QuoteEngine/Full.pm, avg 696ns/call # 1061 times (564µs+0s) by PPI::Token::_QuoteEngine::Full::_fill at line 173 of PPI/Token/_QuoteEngine/Full.pm, avg 532ns/call # 982 times (629µs+0s) by Perl::Critic::Policy::Modules::RequireBarewordIncludes::violates at line 37 of Perl/Critic/Policy/Modules/RequireBarewordIncludes.pm, avg 640ns/call # 572 times (305µs+0s) by PPI::Element::statement at line 284 of PPI/Element.pm, avg 533ns/call # 498 times (300µs+0s) by PPI::Statement::Compound::type at line 204 of PPI/Statement/Compound.pm, avg 602ns/call # 432 times (262µs+0s) by PPI::Lexer::_lex_end at line 680 of PPI/Lexer.pm, avg 607ns/call # 362 times (206µs+0s) by PPI::Lexer::_statement at line 429 of PPI/Lexer.pm, avg 568ns/call # 356 times (242µs+0s) by PPI::Lexer::_square at line 1030 of PPI/Lexer.pm, avg 681ns/call # 339 times (192µs+0s) by PPI::Element::sprevious_sibling at line 412 of PPI/Element.pm, avg 565ns/call # 329 times (227µs+0s) by PPI::Lexer::_continues at line 751 of PPI/Lexer.pm, avg 689ns/call # 284 times (162µs+0s) by PPI::Structure::braces at line 198 of PPI/Structure.pm, avg 571ns/call # 256 times (153µs+0s) by PPI::Lexer::_curly at line 1263 of PPI/Lexer.pm, avg 599ns/call # 226 times (120µs+0s) by PPI::Element::next_sibling at line 341 of PPI/Element.pm, avg 532ns/call # 216 times (132µs+0s) by PPI::Element::next_sibling at line 347 of PPI/Element.pm, avg 611ns/call # 208 times (110µs+0s) by Perl::Critic::Annotation::_init at line 108 of Perl/Critic/Annotation.pm, avg 528ns/call # 144 times (180µs+0s) by Perl::Critic::Document::_disable_shebang_fix at line 545 of Perl/Critic/Document.pm, avg 1µs/call # 144 times (137µs+0s) by PPI::Document::new at line 216 of PPI/Document.pm, avg 952ns/call # 144 times (118µs+0s) by Perl::Critic::Utils::shebang_line at line 1155 of Perl/Critic/Utils.pm, avg 816ns/call # 144 times (104µs+0s) by Perl::Critic::Policy::TestingAndDebugging::RequireUseStrict::violates at line 59 of Perl/Critic/Policy/TestingAndDebugging/RequireUseStrict.pm, avg 725ns/call # 144 times (102µs+0s) by PPI::Node::find_first at line 463 of PPI/Node.pm, avg 708ns/call # 144 times (99µs+0s) by PPI::Document::File::new at line 62 of PPI/Document/File.pm, avg 686ns/call # 144 times (98µs+0s) by Perl::Critic::Policy::Modules::RequireFilenameMatchesPackage::violates at line 49 of Perl/Critic/Policy/Modules/RequireFilenameMatchesPackage.pm, avg 682ns/call # 144 times (94µs+0s) by PPI::Document::File::new at line 67 of PPI/Document/File.pm, avg 653ns/call # 144 times (89µs+0s) by PPI::Tokenizer::_clean_eof at line 635 of PPI/Tokenizer.pm, avg 618ns/call # 144 times (88µs+0s) by PPI::Lexer::_lex_end at line 675 of PPI/Lexer.pm, avg 608ns/call # 144 times (85µs+0s) by PPI::Statement::Package::namespace at line 94 of PPI/Statement/Package.pm, avg 588ns/call # 143 times (216µs+0s) by PPI::Token::Whitespace::null at line 79 of PPI/Token/Whitespace.pm, avg 2µs/call # 128 times (60µs+0s) by Perl::Critic::Utils::_is_dereference_operator at line 798 of Perl/Critic/Utils.pm, avg 471ns/call # 102 times (52µs+0s) by Perl::Critic::Utils::parse_arg_list at line 975 of Perl/Critic/Utils.pm, avg 510ns/call # 96 times (57µs+0s) by PPI::Lexer::_round at line 1011 of PPI/Lexer.pm, avg 598ns/call # 86 times (53µs+0s) by Perl::Critic::Policy::Variables::RequireLexicalLoopIterators::violates at line 54 of Perl/Critic/Policy/Variables/RequireLexicalLoopIterators.pm, avg 612ns/call # 86 times (51µs+0s) by Perl::Critic::Policy::Variables::RequireLexicalLoopIterators::violates at line 58 of Perl/Critic/Policy/Variables/RequireLexicalLoopIterators.pm, avg 590ns/call # 79 times (45µs+0s) by PPI::Statement::Compound::type at line 197 of PPI/Statement/Compound.pm, avg 575ns/call # 79 times (42µs+0s) by Perl::Critic::Utils::is_function_call at line 830 of Perl/Critic/Utils.pm, avg 537ns/call # 77 times (40µs+0s) by Perl::Critic::Utils::is_class_name at line 788 of Perl/Critic/Utils.pm, avg 517ns/call # 77 times (40µs+0s) by Perl::Critic::Utils::is_label_pointer at line 766 of Perl/Critic/Utils.pm, avg 514ns/call # 77 times (39µs+0s) by Perl::Critic::Utils::is_package_declaration at line 809 of Perl/Critic/Utils.pm, avg 509ns/call # 77 times (39µs+0s) by Perl::Critic::Utils::is_included_module_name at line 745 of Perl/Critic/Utils.pm, avg 509ns/call # 77 times (38µs+0s) by Perl::Critic::Utils::is_method_call at line 779 of Perl/Critic/Utils.pm, avg 491ns/call # 77 times (36µs+0s) by Perl::Critic::Utils::is_perl_bareword at line 377 of Perl/Critic/Utils.pm, avg 468ns/call # 77 times (35µs+0s) by Perl::Critic::Utils::is_perl_filehandle at line 420 of Perl/Critic/Utils.pm, avg 460ns/call # 77 times (35µs+0s) by Perl::Critic::Utils::is_package_declaration at line 807 of Perl/Critic/Utils.pm, avg 458ns/call # 77 times (35µs+0s) by Perl::Critic::Utils::is_subroutine_name at line 818 of Perl/Critic/Utils.pm, avg 455ns/call # 77 times (34µs+0s) by Perl::Critic::Utils::is_label_pointer at line 763 of Perl/Critic/Utils.pm, avg 445ns/call # 77 times (34µs+0s) by Perl::Critic::Utils::is_included_module_name at line 743 of Perl/Critic/Utils.pm, avg 442ns/call # 68 times (64µs+0s) by PPI::Lexer::_curly at line 1283 of PPI/Lexer.pm, avg 940ns/call # 65 times (37µs+0s) by Perl::Critic::Utils::first_arg at line 923 of Perl/Critic/Utils.pm, avg 565ns/call # 55 times (30µs+0s) by Perl::Critic::Policy::ControlStructures::ProhibitMutatingListFunctions::violates at line 104 of Perl/Critic/Policy/ControlStructures/ProhibitMutatingListFunctions.pm, avg 540ns/call # 54 times (34µs+0s) by PPI::Lexer::_curly at line 1248 of PPI/Lexer.pm, avg 626ns/call # 54 times (33µs+0s) by PPI::Lexer::_curly at line 1254 of PPI/Lexer.pm, avg 611ns/call # 52 times (34µs+0s) by Perl::Critic::Utils::is_subroutine_name at line 820 of Perl/Critic/Utils.pm, avg 646ns/call # 52 times (32µs+0s) by Perl::Critic::Utils::is_label_pointer at line 769 of Perl/Critic/Utils.pm, avg 625ns/call # 52 times (27µs+0s) by Perl::Critic::Utils::is_subroutine_name at line 822 of Perl/Critic/Utils.pm, avg 515ns/call # 51 times (38µs+0s) by Perl::Critic::Annotation::_init at line 69 of Perl/Critic/Annotation.pm, avg 735ns/call # 51 times (34µs+0s) by PPI::Token::Whitespace::__TOKENIZER__on_char at line 261 of PPI/Token/Whitespace.pm, avg 675ns/call # 51 times (33µs+0s) by Perl::Critic::Annotation::_init at line 57 of Perl/Critic/Annotation.pm, avg 639ns/call # 50 times (23µs+0s) by Perl::Critic::Utils::precedence_of at line 700 of Perl/Critic/Utils.pm, avg 464ns/call # 41 times (27µs+0s) by Perl::Critic::Annotation::_is_single_line_annotation_on_simple_statement at line 188 of Perl/Critic/Annotation.pm, avg 654ns/call # 38 times (22µs+0s) by Perl::Critic::Policy::ControlStructures::ProhibitMutatingListFunctions::_is_assignment_to_topic at line 137 of Perl/Critic/Policy/ControlStructures/ProhibitMutatingListFunctions.pm, avg 582ns/call # 24 times (11µs+0s) by PPI::Element::top at line 306 of PPI/Element.pm, avg 475ns/call # 23 times (13µs+0s) by PPI::Structure::location at line 264 of PPI/Structure.pm, avg 548ns/call # 23 times (12µs+0s) by PPI::Structure::first_element at line 251 of PPI/Structure.pm, avg 513ns/call # 21 times (12µs+0s) by Perl::Critic::Policy::ControlStructures::ProhibitMutatingListFunctions::_is_assignment_to_topic at line 142 of Perl/Critic/Policy/ControlStructures/ProhibitMutatingListFunctions.pm, avg 571ns/call # 18 times (10µs+0s) by Perl::Critic::Utils::parse_arg_list at line 940 of Perl/Critic/Utils.pm, avg 561ns/call # 18 times (10µs+0s) by Perl::Critic::Utils::parse_arg_list at line 970 of Perl/Critic/Utils.pm, avg 528ns/call # 16 times (10µs+0s) by Perl::Critic::Annotation::_is_single_line_annotation_on_simple_statement at line 205 of Perl/Critic/Annotation.pm, avg 625ns/call # 14 times (8µs+0s) by PPI::Lexer::_statement at line 585 of PPI/Lexer.pm, avg 564ns/call # 12 times (6µs+0s) by Perl::Critic::Annotation::_is_single_line_annotation_on_simple_statement at line 209 of Perl/Critic/Annotation.pm, avg 517ns/call # 10 times (5µs+0s) by Perl::Critic::Policy::BuiltinFunctions::ProhibitStringyEval::violates at line 53 of Perl/Critic/Policy/BuiltinFunctions/ProhibitStringyEval.pm, avg 510ns/call # 8 times (4µs+0s) by Perl::Critic::Annotation::_init at line 119 of Perl/Critic/Annotation.pm, avg 500ns/call # 5 times (3µs+0s) by Perl::Critic::Policy::InputOutput::ProhibitBarewordFileHandles::violates at line 43 of Perl/Critic/Policy/InputOutput/ProhibitBarewordFileHandles.pm, avg 680ns/call # 3 times (2µs+0s) by Perl::Critic::Violation::_line_containing_violation at line 303 of Perl/Critic/Violation.pm, avg 500ns/call # 2 times (2µs+0s) by PPI::Token::Unknown::__TOKENIZER__on_char at line 59 of PPI/Token/Unknown.pm, avg 750ns/call # 2 times (1µs+0s) by Perl::Critic::Annotation::_init at line 116 of Perl/Critic/Annotation.pm, avg 550ns/call # 2 times (1µs+0s) by PPI::Lexer::_continues at line 876 of PPI/Lexer.pm, avg 500ns/call # once (900ns+0s) by PPI::Token::Whitespace::__TOKENIZER__on_char at line 316 of PPI/Token/Whitespace.pm # once (500ns+0s) by PPI::Lexer::_curly at line 1211 of PPI/Lexer.pm
sub PPI::Util::TRUE; # xsub