Filename | /usr/lib/x86_64-linux-gnu/perl-base/strict.pm |
Statements | Executed 0 statements in 0s |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
67 | 67 | 43 | 271µs | 271µs | unimport | strict::
118 | 116 | 110 | 184µs | 184µs | import | strict::
0 | 0 | 0 | 0s | 0s | BEGIN | strict::
0 | 0 | 0 | 0s | 0s | __ANON__[:31] | strict::
0 | 0 | 0 | 0s | 0s | __ANON__[:37] | strict::
0 | 0 | 0 | 0s | 0s | bits | strict::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | package strict; | ||||
2 | |||||
3 | $strict::VERSION = "1.12"; | ||||
4 | |||||
5 | my ( %bitmask, %explicit_bitmask ); | ||||
6 | |||||
7 | BEGIN { | ||||
8 | # Verify that we're called correctly so that strictures will work. | ||||
9 | # Can't use Carp, since Carp uses us! | ||||
10 | # see also warnings.pm. | ||||
11 | die sprintf "Incorrect use of pragma '%s' at %s line %d.\n", __PACKAGE__, +(caller)[1,2] | ||||
12 | if __FILE__ !~ ( '(?x) \b '.__PACKAGE__.' \.pmc? \z' ) | ||||
13 | && __FILE__ =~ ( '(?x) \b (?i:'.__PACKAGE__.') \.pmc? \z' ); | ||||
14 | |||||
15 | %bitmask = ( | ||||
16 | refs => 0x00000002, | ||||
17 | subs => 0x00000200, | ||||
18 | vars => 0x00000400, | ||||
19 | ); | ||||
20 | |||||
21 | %explicit_bitmask = ( | ||||
22 | refs => 0x00000020, | ||||
23 | subs => 0x00000040, | ||||
24 | vars => 0x00000080, | ||||
25 | ); | ||||
26 | |||||
27 | my $bits = 0; | ||||
28 | $bits |= $_ for values %bitmask; | ||||
29 | |||||
30 | my $inline_all_bits = $bits; | ||||
31 | *all_bits = sub () { $inline_all_bits }; | ||||
32 | |||||
33 | $bits = 0; | ||||
34 | $bits |= $_ for values %explicit_bitmask; | ||||
35 | |||||
36 | my $inline_all_explicit_bits = $bits; | ||||
37 | *all_explicit_bits = sub () { $inline_all_explicit_bits }; | ||||
38 | } | ||||
39 | |||||
40 | sub bits { | ||||
41 | my $bits = 0; | ||||
42 | my @wrong; | ||||
43 | foreach my $s (@_) { | ||||
44 | if (exists $bitmask{$s}) { | ||||
45 | $^H |= $explicit_bitmask{$s}; | ||||
46 | |||||
47 | $bits |= $bitmask{$s}; | ||||
48 | } | ||||
49 | else { | ||||
50 | push @wrong, $s; | ||||
51 | } | ||||
52 | } | ||||
53 | if (@wrong) { | ||||
54 | require Carp; | ||||
55 | Carp::croak("Unknown 'strict' tag(s) '@wrong'"); | ||||
56 | } | ||||
57 | $bits; | ||||
58 | } | ||||
59 | |||||
60 | # spent 184µs within strict::import which was called 118 times, avg 2µs/call:
# 3 times (3µs+0s) by strictures::_enable_2 at line 169 of strictures.pm, avg 1µs/call
# once (5µs+0s) by Carp::Assert::BEGIN@4 at line 4 of Carp/Assert.pm
# once (3µs+0s) by vars::BEGIN@8 at line 8 of vars.pm
# once (3µs+0s) by IPC::Run::IO::BEGIN@65 at line 65 of IPC/Run/IO.pm
# once (3µs+0s) by base::BEGIN@4 at line 4 of base.pm
# once (3µs+0s) by Data::Printer::Config::BEGIN@2 at line 2 of Data/Printer/Config.pm
# once (3µs+0s) by ExtUtils::MY::BEGIN@3 at line 3 of ExtUtils/MY.pm
# once (3µs+0s) by Encode::MIME::Name::BEGIN@2 at line 2 of Encode/MIME/Name.pm
# once (2µs+0s) by Scalar::Util::BEGIN@9 at line 9 of Scalar/Util.pm
# once (2µs+0s) by ExtUtils::MakeMaker::version::BEGIN@14 at line 14 of ExtUtils/MakeMaker/version.pm
# once (2µs+0s) by ExtUtils::MM_Any::BEGIN@3 at line 3 of ExtUtils/MM_Any.pm
# once (2µs+0s) by Fcntl::BEGIN@3 at line 3 of Fcntl.pm
# once (2µs+0s) by ExtUtils::MM_Unix::BEGIN@5 at line 5 of ExtUtils/MM_Unix.pm
# once (2µs+0s) by Symbol::BEGIN@88 at line 88 of Symbol.pm
# once (2µs+0s) by re::BEGIN@4 at line 4 of re.pm
# once (2µs+0s) by IPC::Open3::BEGIN@3 at line 3 of IPC/Open3.pm
# once (2µs+0s) by lib::BEGIN@8 at line 8 of lib.pm
# once (2µs+0s) by attributes::BEGIN@9 at line 9 of attributes.pm
# once (2µs+0s) by Pod::Usage::BEGIN@13 at line 13 of Pod/Usage.pm
# once (2µs+0s) by Pod::Simple::BEGIN@2 at line 2 of Pod/Simple/TiedOutFH.pm
# once (2µs+0s) by Time::HiRes::BEGIN@4 at line 4 of Time/HiRes.pm
# once (2µs+0s) by Pod::Simple::LinkSection::BEGIN@6 at line 6 of Pod/Simple/LinkSection.pm
# once (2µs+0s) by main::BEGIN@2 at line 2 of Capture/Tiny.pm
# once (2µs+0s) by main::BEGIN@15.7 at line 15 of Getopt/Long.pm
# once (2µs+0s) by bytes::BEGIN@3 at line 3 of bytes.pm
# once (2µs+0s) by PerlIO::encoding::BEGIN@3 at line 3 of PerlIO/encoding.pm
# once (2µs+0s) by YAML::XS::LibYAML::BEGIN@3 at line 3 of YAML/XS/LibYAML.pm
# once (2µs+0s) by IPC::Run::Timer::BEGIN@160 at line 160 of IPC/Run/Timer.pm
# once (2µs+0s) by ExtUtils::MakeMaker::Locale::BEGIN@3 at line 3 of ExtUtils/MakeMaker/Locale.pm
# once (2µs+0s) by JSON::BEGIN@4 at line 4 of JSON.pm
# once (2µs+0s) by File::Glob::BEGIN@3 at line 3 of File/Glob.pm
# once (2µs+0s) by Encode::Encoding::BEGIN@4 at line 4 of Encode/Encoding.pm
# once (2µs+0s) by Cwd::BEGIN@2 at line 2 of Cwd.pm
# once (2µs+0s) by Encode::Alias::BEGIN@2 at line 2 of Encode/Alias.pm
# once (2µs+0s) by File::Temp::BEGIN@145 at line 145 of File/Temp.pm
# once (2µs+0s) by File::Temp::Dir::BEGIN@2591 at line 2591 of File/Temp.pm
# once (2µs+0s) by Contextual::Return::Failure::BEGIN@8 at line 8 of Contextual/Return/Failure.pm
# once (2µs+0s) by File::Find::BEGIN@3 at line 3 of File/Find.pm
# once (2µs+0s) by utf8::BEGIN@3 at line 3 of utf8.pm
# once (2µs+0s) by main::BEGIN@1 at line 1 of YAML/XS.pm
# once (2µs+0s) by Pod::Text::BEGIN@18 at line 18 of Pod/Text.pm
# once (2µs+0s) by Want::BEGIN@3 at line 3 of DynaLoader.pm
# once (2µs+0s) by File::Basename::BEGIN@12 at line 12 of File/Basename.pm
# once (2µs+0s) by Data::Printer::Filter::GLOB::BEGIN@2 at line 2 of Data/Printer/Filter/GLOB.pm
# once (2µs+0s) by Text::CSV::BEGIN@4 at line 4 of Text/CSV.pm
# once (2µs+0s) by File::Slurp::BEGIN@3 at line 3 of File/Slurp.pm
# once (2µs+0s) by Text::ParseWords::BEGIN@3 at line 3 of Text/ParseWords.pm
# once (2µs+0s) by Data::Printer::Theme::BEGIN@2 at line 2 of Data/Printer/Theme.pm
# once (2µs+0s) by builtin::BEGIN@3 at line 3 of builtin.pm
# once (2µs+0s) by diagnostics::BEGIN@184 at line 184 of diagnostics.pm
# once (2µs+0s) by if::BEGIN@2 at line 2 of if.pm
# once (2µs+0s) by Params::Check::BEGIN@3 at line 3 of Params/Check.pm
# once (2µs+0s) by Data::Printer::Filter::SCALAR::BEGIN@2 at line 2 of Data/Printer/Filter/SCALAR.pm
# once (2µs+0s) by Exporter::BEGIN@3 at line 3 of Exporter.pm
# once (2µs+0s) by parent::BEGIN@2 at line 2 of parent.pm
# once (2µs+0s) by ExtUtils::Liblist::BEGIN@3 at line 3 of ExtUtils/Liblist.pm
# once (2µs+0s) by File::Spec::BEGIN@3 at line 3 of File/Spec.pm
# once (1µs+0s) by Data::Printer::Filter::REF::BEGIN@2 at line 2 of Data/Printer/Filter/REF.pm
# once (1µs+0s) by IO::Seekable::BEGIN@99 at line 99 of IO/Seekable.pm
# once (1µs+0s) by Data::Printer::Filter::HASH::BEGIN@2 at line 2 of Data/Printer/Filter/HASH.pm
# once (1µs+0s) by IPC::Cmd::BEGIN@3 at line 3 of IPC/Cmd.pm
# once (1µs+0s) by Pod::Simple::BEGIN@4 at line 4 of Pod/Simple.pm
# once (1µs+0s) by Text::CSV_XS::BEGIN@21 at line 21 of Text/CSV_XS.pm
# once (1µs+0s) by diagnostics::BEGIN@1 at line 1 of Text/Tabs.pm
# once (1µs+0s) by I18N::Langinfo::BEGIN@4 at line 4 of I18N/Langinfo.pm
# once (1µs+0s) by ExtUtils::MM::BEGIN@3 at line 3 of ExtUtils/MM.pm
# once (1µs+0s) by Encode::Config::BEGIN@7 at line 7 of Encode/Config.pm
# once (1µs+0s) by IO::File::BEGIN@128 at line 128 of IO/File.pm
# once (1µs+0s) by Errno::BEGIN@9 at line 9 of Errno.pm
# once (1µs+0s) by ExtUtils::MakeMaker::BEGIN@4 at line 4 of ExtUtils/MakeMaker.pm
# once (1µs+0s) by strictures::BEGIN@3 at line 3 of strictures.pm
# once (1µs+0s) by constant::BEGIN@3 at line 3 of constant.pm
# once (1µs+0s) by IO::Select::BEGIN@9 at line 9 of IO/Select.pm
# once (1µs+0s) by Data::Printer::Filter::GenericClass::BEGIN@2 at line 2 of Data/Printer/Filter/GenericClass.pm
# once (1µs+0s) by Config::BEGIN@9 at line 9 of Config.pm
# once (1µs+0s) by Pod::Simple::BEGIN@1521 at line 1521 of Pod/Simple.pm
# once (1µs+0s) by Want::BEGIN@5 at line 5 of Want.pm
# once (1µs+0s) by Data::Printer::Filter::FORMAT::BEGIN@2 at line 2 of Data/Printer/Filter/FORMAT.pm
# once (1µs+0s) by IPC::Run::BEGIN@1013 at line 1013 of IPC/Run.pm
# once (1µs+0s) by List::Util::BEGIN@9 at line 9 of List/Util.pm
# once (1µs+0s) by FileHandle::BEGIN@4 at line 4 of FileHandle.pm
# once (1µs+0s) by Socket::BEGIN@3 at line 3 of Socket.pm
# once (1µs+0s) by POSIX::BEGIN@2 at line 2 of POSIX.pm
# once (1µs+0s) by Exporter::Heavy::BEGIN@3 at line 3 of Exporter/Heavy.pm
# once (1µs+0s) by version::BEGIN@5 at line 5 of version.pm
# once (1µs+0s) by Data::Printer::BEGIN@2 at line 2 of Data/Printer.pm
# once (1µs+0s) by Module::Load::Conditional::BEGIN@3 at line 3 of Module/Load/Conditional.pm
# once (1µs+0s) by ExtUtils::Liblist::Kid::BEGIN@12 at line 12 of ExtUtils/Liblist/Kid.pm
# once (1µs+0s) by File::Path::BEGIN@4 at line 4 of File/Path.pm
# once (1µs+0s) by Module::Metadata::BEGIN@14 at line 14 of Module/Metadata.pm
# once (1µs+0s) by Data::Printer::Filter::ARRAY::BEGIN@2 at line 2 of Data/Printer/Filter/ARRAY.pm
# once (1µs+0s) by IPC::Run::BEGIN@1050 at line 1050 of IPC/Run.pm
# once (1µs+0s) by Encode::BEGIN@5 at line 5 of Encode.pm
# once (1µs+0s) by Data::Printer::Filter::CODE::BEGIN@2 at line 2 of Data/Printer/Filter/CODE.pm
# once (1µs+0s) by Data::Printer::Filter::Regexp::BEGIN@2 at line 2 of Data/Printer/Filter/Regexp.pm
# once (1µs+0s) by Data::Printer::Filter::VSTRING::BEGIN@2 at line 2 of Data/Printer/Filter/VSTRING.pm
# once (1µs+0s) by Carp::BEGIN@4 at line 4 of Carp.pm
# once (1µs+0s) by version::regex::BEGIN@3 at line 3 of version/regex.pm
# once (1µs+0s) by File::Spec::Unix::BEGIN@3 at line 3 of File/Spec/Unix.pm
# once (1µs+0s) by overload::BEGIN@3 at line 3 of overload.pm
# once (1µs+0s) by IPC::Run::Debug::BEGIN@69 at line 69 of IPC/Run/Debug.pm
# once (1µs+0s) by IO::BEGIN@7 at line 7 of IO.pm
# once (1µs+0s) by Data::Printer::Filter::BEGIN@2 at line 2 of Data/Printer/Filter.pm
# once (1µs+0s) by ExtUtils::MakeMaker::Config::BEGIN@3 at line 3 of ExtUtils/MakeMaker/Config.pm
# once (1µs+0s) by Locale::Maketext::Simple::BEGIN@4 at line 4 of Locale/Maketext/Simple.pm
# once (1µs+0s) by IO::Handle::BEGIN@264 at line 264 of IO/Handle.pm
# once (1µs+0s) by File::Find::BEGIN@13 at line 13 of File/Find.pm
# once (1µs+0s) by Config::BEGIN@5 at line 5 of Config_heavy.pl
# once (1µs+0s) by Data::Printer::BEGIN@1 at line 1 of Data/Printer/Object.pm
# once (1µs+0s) by Pod::Escapes::BEGIN@2 at line 2 of Pod/Escapes.pm
# once (1µs+0s) by Data::Printer::Common::BEGIN@3 at line 3 of Data/Printer/Common.pm
# once (900ns+0s) by IO::Prompter::BEGIN@7 at line 7 of IO/Prompter.pm
# once (900ns+0s) by Symbol::BEGIN@3 at line 3 of Symbol.pm
# once (900ns+0s) by Module::Load::BEGIN@3 at line 3 of Module/Load.pm
# once (800ns+0s) by Contextual::Return::BEGIN@3 at line 3 of Contextual/Return.pm
# once (600ns+0s) by Pod::Simple::BlackBox::BEGIN@22 at line 22 of Pod/Simple/BlackBox.pm | ||||
61 | shift; | ||||
62 | $^H |= @_ ? &bits : all_bits | all_explicit_bits; | ||||
63 | } | ||||
64 | |||||
65 | # spent 271µs within strict::unimport which was called 67 times, avg 4µs/call:
# once (6µs+0s) by JSON::Backend::XS::BEGIN@13 at line 13 of (eval 13)[JSON.pm:295]
# once (6µs+0s) by ExtUtils::MakeMaker::BEGIN@665 at line 665 of ExtUtils/MakeMaker.pm
# once (6µs+0s) by Pod::Simple::BEGIN@1517 at line 1517 of Pod/Simple.pm
# once (6µs+0s) by IO::Prompter::BEGIN@104 at line 104 of IO/Prompter.pm
# once (6µs+0s) by Cwd::BEGIN@657 at line 657 of Cwd.pm
# once (5µs+0s) by IO::Handle::BEGIN@609 at line 609 of IO/Handle.pm
# once (5µs+0s) by Module::Load::Conditional::BEGIN@196 at line 196 of Module/Load/Conditional.pm
# once (5µs+0s) by JSON::Backend::PP::BEGIN@342 at line 342 of JSON.pm
# once (5µs+0s) by main::BEGIN@1212 at line 1212 of IO/Prompter.pm
# once (5µs+0s) by Data::Printer::BEGIN@39 at line 39 of Data/Printer.pm
# once (5µs+0s) by ExtUtils::MakeMaker::version::BEGIN@40 at line 40 of ExtUtils/MakeMaker/version.pm
# once (5µs+0s) by Capture::Tiny::BEGIN@102 at line 102 of Capture/Tiny.pm
# once (5µs+0s) by Data::Printer::Common::BEGIN@401 at line 401 of Data/Printer/Common.pm
# once (5µs+0s) by Data::Printer::Object::BEGIN@76 at line 76 of Data/Printer/Object.pm
# once (5µs+0s) by IPC::Open3::BEGIN@4 at line 4 of IPC/Open3.pm
# once (5µs+0s) by constant::BEGIN@40 at line 40 of constant.pm
# once (5µs+0s) by IO::Prompter::BEGIN@1689 at line 1689 of IO/Prompter.pm
# once (5µs+0s) by Time::HiRes::BEGIN@70 at line 70 of Time/HiRes.pm
# once (5µs+0s) by Contextual::Return::BEGIN@670 at line 670 of Contextual/Return.pm
# once (5µs+0s) by Text::CSV::BEGIN@122 at line 122 of Text/CSV.pm
# once (5µs+0s) by Carp::BEGIN@728 at line 728 of Carp.pm
# once (5µs+0s) by Carp::BEGIN@187 at line 187 of Carp.pm
# once (5µs+0s) by File::Temp::BEGIN@240 at line 240 of File/Temp.pm
# once (5µs+0s) by DynaLoader::BEGIN@109 at line 109 of DynaLoader.pm
# once (5µs+0s) by Contextual::Return::BEGIN@145 at line 145 of Contextual/Return.pm
# once (5µs+0s) by List::Util::BEGIN@35 at line 35 of List/Util.pm
# once (5µs+0s) by Socket::BEGIN@843 at line 843 of Socket.pm
# once (4µs+0s) by ExtUtils::MakeMaker::Config::BEGIN@17 at line 17 of ExtUtils/MakeMaker/Config.pm
# once (4µs+0s) by Symbol::BEGIN@25 at line 25 of Symbol.pm
# once (4µs+0s) by File::Path::BEGIN@29 at line 29 of File/Path.pm
# once (4µs+0s) by Contextual::Return::BEGIN@313 at line 313 of Contextual/Return.pm
# once (4µs+0s) by parent::BEGIN@21 at line 21 of parent.pm
# once (4µs+0s) by FileHandle::BEGIN@46 at line 46 of FileHandle.pm
# once (4µs+0s) by Carp::BEGIN@254 at line 254 of Carp.pm
# once (4µs+0s) by Module::Load::BEGIN@14 at line 14 of Module/Load.pm
# once (4µs+0s) by Locale::Maketext::Simple::BEGIN@122 at line 122 of Locale/Maketext/Simple.pm
# once (4µs+0s) by ExtUtils::MakeMaker::BEGIN@1178 at line 1178 of ExtUtils/MakeMaker.pm
# once (4µs+0s) by ExtUtils::MakeMaker::Locale::BEGIN@141 at line 141 of ExtUtils/MakeMaker/Locale.pm
# once (4µs+0s) by Exporter::Heavy::BEGIN@4 at line 4 of Exporter/Heavy.pm
# once (4µs+0s) by Contextual::Return::BEGIN@809 at line 809 of Contextual/Return.pm
# once (4µs+0s) by IPC::Cmd::BEGIN@357 at line 357 of IPC/Cmd.pm
# once (4µs+0s) by File::Spec::Unix::BEGIN@167 at line 167 of File/Spec/Unix.pm
# once (4µs+0s) by Contextual::Return::BEGIN@223 at line 223 of Contextual/Return.pm
# once (4µs+0s) by Symbol::BEGIN@59 at line 59 of Symbol.pm
# once (3µs+0s) by Data::Printer::Theme::BEGIN@95 at line 95 of Data/Printer/Theme.pm
# once (3µs+0s) by JSON::Backend::XS::BEGIN@51 at line 51 of (eval 13)[JSON.pm:295]
# once (3µs+0s) by File::Temp::BEGIN@270 at line 270 of File/Temp.pm
# once (3µs+0s) by Data::Printer::Filter::BEGIN@26 at line 26 of Data/Printer/Filter.pm
# once (3µs+0s) by Config::BEGIN@47 at line 47 of Config.pm
# once (3µs+0s) by Module::Load::BEGIN@89 at line 89 of Module/Load.pm
# once (3µs+0s) by Socket::BEGIN@942 at line 942 of Socket.pm
# once (3µs+0s) by version::BEGIN@27 at line 27 of version.pm
# once (3µs+0s) by constant::BEGIN@65 at line 65 of constant.pm
# once (3µs+0s) by Data::Printer::Common::BEGIN@428 at line 428 of Data/Printer/Common.pm
# once (3µs+0s) by IO::Prompter::BEGIN@118 at line 118 of IO/Prompter.pm
# once (3µs+0s) by Contextual::Return::BEGIN@354 at line 354 of Contextual/Return.pm
# once (3µs+0s) by Symbol::BEGIN@78 at line 78 of Symbol.pm
# once (3µs+0s) by Carp::BEGIN@749 at line 749 of Carp.pm
# once (3µs+0s) by overload::BEGIN@4 at line 4 of overload.pm
# once (3µs+0s) by ExtUtils::MakeMaker::Locale::BEGIN@147 at line 147 of ExtUtils/MakeMaker/Locale.pm
# once (2µs+0s) by ExtUtils::MakeMaker::BEGIN@1161 at line 1161 of ExtUtils/MakeMaker.pm
# once (2µs+0s) by constant::BEGIN@90 at line 90 of constant.pm
# once (2µs+0s) by POSIX::BEGIN@225 at line 225 of POSIX.pm
# once (2µs+0s) by ExtUtils::MakeMaker::_version::BEGIN@3021 at line 3021 of ExtUtils/MM_Unix.pm
# once (2µs+0s) by Exporter::BEGIN@4 at line 4 of Exporter.pm
# once (2µs+0s) by constant::BEGIN@141 at line 141 of constant.pm
# once (2µs+0s) by File::Glob::BEGIN@54 at line 54 of File/Glob.pm | ||||
66 | shift; | ||||
67 | |||||
68 | if (@_) { | ||||
69 | $^H &= ~&bits; | ||||
70 | } | ||||
71 | else { | ||||
72 | $^H &= ~all_bits; | ||||
73 | $^H |= all_explicit_bits; | ||||
74 | } | ||||
75 | } | ||||
76 | |||||
77 | 1; | ||||
78 | __END__ | ||||
79 |