Filename | /home/ss5/perl5/perlbrew/perls/perl-5.14.1/lib/site_perl/5.14.1/App/Rad/Help.pm |
Statements | Executed 27 statements in 2.61ms |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
1 | 1 | 1 | 8.54ms | 31.8ms | BEGIN@2 | App::Rad::Help::
5 | 5 | 5 | 322µs | 322µs | VERSION (xsub) | UNIVERSAL::
13 | 2 | 2 | 96µs | 96µs | isa (xsub) | UNIVERSAL::
4 | 2 | 2 | 72µs | 72µs | can (xsub) | UNIVERSAL::
3 | 2 | 1 | 51µs | 51µs | register_help | App::Rad::Help::
1 | 1 | 1 | 34µs | 1.01ms | BEGIN@59 | App::Rad::Help::
1 | 1 | 1 | 30µs | 43µs | BEGIN@3 | App::Rad::Help::
1 | 1 | 1 | 27µs | 49µs | BEGIN@4 | App::Rad::Help::
1 | 1 | 1 | 26µs | 26µs | Help | UNIVERSAL::
1 | 1 | 1 | 22µs | 116µs | load | App::Rad::Help::
0 | 0 | 0 | 0s | 0s | help | App::Rad::Help::
0 | 0 | 0 | 0s | 0s | helpstr | App::Rad::Help::
0 | 0 | 0 | 0s | 0s | usage | App::Rad::Help::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | package App::Rad::Help; | ||||
2 | 2 | 400µs | 2 | 31.8ms | # spent 31.8ms (8.54+23.3) within App::Rad::Help::BEGIN@2 which was called:
# once (8.54ms+23.3ms) by App::Rad::BEGIN@3 at line 2 # spent 31.8ms making 1 call to App::Rad::Help::BEGIN@2
# spent 14µs making 1 call to Attribute::Handlers::import |
3 | 2 | 87µs | 2 | 56µs | # spent 43µs (30+13) within App::Rad::Help::BEGIN@3 which was called:
# once (30µs+13µs) by App::Rad::BEGIN@3 at line 3 # spent 43µs making 1 call to App::Rad::Help::BEGIN@3
# spent 13µs making 1 call to strict::import |
4 | 2 | 1.39ms | 2 | 70µs | # spent 49µs (27+22) within App::Rad::Help::BEGIN@4 which was called:
# once (27µs+22µs) by App::Rad::BEGIN@3 at line 4 # spent 49µs making 1 call to App::Rad::Help::BEGIN@4
# spent 22µs making 1 call to warnings::import |
5 | |||||
6 | 1 | 3µs | our $VERSION = '0.03'; | ||
7 | |||||
8 | # spent 116µs (22+94) within App::Rad::Help::load which was called:
# once (22µs+94µs) by App::Rad::_init at line 40 of App/Rad.pm | ||||
9 | 1 | 4µs | my ($self, $c) = @_; | ||
10 | 1 | 26µs | 1 | 94µs | $c->register('help', \&help, 'show syntax and available commands'); # spent 94µs making 1 call to App::Rad::register |
11 | } | ||||
12 | |||||
13 | # shows specific help commands | ||||
14 | # TODO: context specific help, | ||||
15 | # such as "myapp.pl help command" | ||||
16 | sub help { | ||||
17 | my $c = shift; | ||||
18 | return usage() . "\n\n" . helpstr($c); | ||||
19 | } | ||||
20 | |||||
21 | sub usage { | ||||
22 | return "Usage: $0 command [arguments]"; | ||||
23 | } | ||||
24 | |||||
25 | sub helpstr { | ||||
26 | my $c = shift; | ||||
27 | |||||
28 | my $string = "Available Commands:\n"; | ||||
29 | |||||
30 | # get length of largest command name | ||||
31 | my $len = 0; | ||||
32 | foreach ( sort $c->commands() ) { | ||||
33 | $len = length($_) if (length($_) > $len); | ||||
34 | } | ||||
35 | |||||
36 | # format help string | ||||
37 | foreach ( sort $c->commands() ) { | ||||
38 | $string .= sprintf " %-*s\t%s\n", $len, $_, | ||||
39 | defined ($c->{'_commands'}->{$_}->{'help'}) | ||||
40 | ? $c->{'_commands'}->{$_}->{'help'} | ||||
41 | : '' | ||||
42 | ; | ||||
43 | ; | ||||
44 | } | ||||
45 | return $string; | ||||
46 | } | ||||
47 | |||||
48 | |||||
49 | { | ||||
50 | 2 | 6µs | my %help_attr = (); | ||
51 | # spent 26µs within UNIVERSAL::Help which was called:
# once (26µs+0s) by Attribute::Handlers::_apply_handler_AH_ at line 225 of Attribute/Handlers.pm | ||||
52 | 1 | 8µs | my ($package, $symbol, $ref, $attr, $data, $phase, $filename, $linenum) = @_; | ||
53 | |||||
54 | 1 | 19µs | if ($package eq 'main') { | ||
55 | # If data is a single word, it is received as an array ref. Don't ask. | ||||
56 | 1 | 1µs | $data = join(' ', @$data) if ref($data) eq 'ARRAY'; | ||
57 | 1 | 6µs | $help_attr{ *{$symbol}{NAME} } = $data; | ||
58 | } | ||||
59 | 2 | 582µs | 2 | 1.98ms | # spent 1.01ms (34µs+973µs) within App::Rad::Help::BEGIN@59 which was called:
# once (34µs+973µs) by App::Rad::BEGIN@3 at line 59 # spent 1.01ms making 1 call to App::Rad::Help::BEGIN@59
# spent 973µs making 1 call to attributes::import |
60 | |||||
61 | # spent 51µs within App::Rad::Help::register_help which was called 3 times, avg 17µs/call:
# 2 times (34µs+0s) by App::Rad::register_commands at line 252 of App/Rad.pm, avg 17µs/call
# once (16µs+0s) by App::Rad::register at line 306 of App/Rad.pm | ||||
62 | 3 | 12µs | my ($self, $c, $cmd, $helptext) = @_; | ||
63 | |||||
64 | 3 | 10µs | if ((not defined $helptext) && (defined $help_attr{$cmd})) { | ||
65 | $helptext = $help_attr{$cmd}; | ||||
66 | } | ||||
67 | |||||
68 | # we do $helptext // undef as it would issue a warning otherwise | ||||
69 | 3 | 46µs | $c->{'_commands'}->{$cmd}->{'help'} = defined $helptext | ||
70 | ? $helptext | ||||
71 | : undef | ||||
72 | ; | ||||
73 | } | ||||
74 | |||||
75 | } | ||||
76 | 1 | 14µs | 42; | ||
77 | __END__ | ||||
# spent 322µs within UNIVERSAL::VERSION which was called 5 times, avg 64µs/call:
# once (76µs+0s) by Exception::Class::Base::BEGIN@10 at line 10 of Exception/Class/Base.pm
# once (69µs+0s) by Data::OptList::BEGIN@11 at line 11 of Data/OptList.pm
# once (65µs+0s) by Data::DPath::Path::BEGIN@17 at line 17 of Data/DPath/Path.pm
# once (61µs+0s) by Sub::Exporter::BEGIN@9 at line 9 of Sub/Exporter.pm
# once (52µs+0s) by Exporter::Heavy::heavy_export at line 120 of Exporter/Heavy.pm | |||||
# spent 72µs within UNIVERSAL::can which was called 4 times, avg 18µs/call:
# 3 times (62µs+0s) by attributes::import at line 50 of attributes.pm, avg 21µs/call
# once (11µs+0s) by Attribute::Handlers::__ANON__[/home/ss5/perl5/perlbrew/perls/perl-5.14.1/lib/5.14.1/Attribute/Handlers.pm:195] at line 171 of Attribute/Handlers.pm | |||||
# spent 96µs within UNIVERSAL::isa which was called 13 times, avg 7µs/call:
# 10 times (77µs+0s) by base::import at line 74 of base.pm, avg 8µs/call
# 3 times (19µs+0s) by Exception::Class::_make_subclass at line 152 of Exception/Class.pm, avg 6µs/call |