| Filename | /Users/ether/.perlbrew/libs/36.0@std/lib/perl5/Data/Perl/Collection/Array/MooseLike.pm |
| Statements | Executed 11 statements in 573µs |
| Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
|---|---|---|---|---|---|
| 1 | 1 | 1 | 524µs | 628µs | Data::Perl::Collection::Array::MooseLike::BEGIN@7 |
| 1 | 1 | 1 | 46µs | 162µs | Data::Perl::Collection::Array::MooseLike::BEGIN@5 |
| 1 | 1 | 1 | 11µs | 28µs | Data::Perl::Collection::Array::MooseLike::BEGIN@8 |
| 0 | 0 | 0 | 0s | 0s | Data::Perl::Collection::Array::MooseLike::__ANON__[:20] |
| Line | State ments |
Time on line |
Calls | Time in subs |
Code |
|---|---|---|---|---|---|
| 1 | package Data::Perl::Collection::Array::MooseLike; | ||||
| 2 | 1 | 0s | $Data::Perl::Collection::Array::MooseLike::VERSION = '0.001009'; | ||
| 3 | # ABSTRACT: Collection::Array subclass that simulates Moose's native traits. | ||||
| 4 | |||||
| 5 | 3 | 38µs | 3 | 278µs | # spent 162µs (46+116) within Data::Perl::Collection::Array::MooseLike::BEGIN@5 which was called:
# once (46µs+116µs) by Module::Runtime::require_module at line 5 # spent 162µs making 1 call to Data::Perl::Collection::Array::MooseLike::BEGIN@5
# spent 87µs making 1 call to strictures::import
# spent 29µs making 1 call to strictures::VERSION |
| 6 | |||||
| 7 | 2 | 398µs | 2 | 651µs | # spent 628µs (524+104) within Data::Perl::Collection::Array::MooseLike::BEGIN@7 which was called:
# once (524µs+104µs) by Module::Runtime::require_module at line 7 # spent 628µs making 1 call to Data::Perl::Collection::Array::MooseLike::BEGIN@7
# spent 23µs making 1 call to Exporter::import |
| 8 | 2 | 124µs | 2 | 45µs | # spent 28µs (11+17) within Data::Perl::Collection::Array::MooseLike::BEGIN@8 which was called:
# once (11µs+17µs) by Module::Runtime::require_module at line 8 # spent 28µs making 1 call to Data::Perl::Collection::Array::MooseLike::BEGIN@8
# spent 17µs making 1 call to Exporter::import |
| 9 | |||||
| 10 | 1 | 1µs | 1 | 3.48ms | with 'Data::Perl::Role::Collection::Array'; # spent 3.48ms making 1 call to Role::Tiny::With::with |
| 11 | |||||
| 12 | around 'splice' => sub { | ||||
| 13 | my $orig = shift; | ||||
| 14 | my @res = $orig->(@_); | ||||
| 15 | |||||
| 16 | # support both class instance method invocation style | ||||
| 17 | @res = blessed($res[0]) && $res[0]->isa('Data::Perl::Collection::Array') ? $res[0]->flatten : @res; | ||||
| 18 | |||||
| 19 | wantarray ? @res : $res[-1]; | ||||
| 20 | 1 | 5µs | 1 | 269µs | }; # spent 269µs making 1 call to Class::Method::Modifiers::around |
| 21 | |||||
| 22 | 1 | 7µs | 1; | ||
| 23 | |||||
| 24 | =pod | ||||
| 25 | |||||
| 26 | =encoding UTF-8 | ||||
| 27 | |||||
| 28 | =head1 NAME | ||||
| 29 | |||||
| 30 | Data::Perl::Collection::Array::MooseLike - Collection::Array subclass that simulates Moose's native traits. | ||||
| 31 | |||||
| 32 | =head1 VERSION | ||||
| 33 | |||||
| 34 | version 0.001009 | ||||
| 35 | |||||
| 36 | =head1 SYNOPSIS | ||||
| 37 | |||||
| 38 | use Data::Perl::Collection::Array::MooseLike; | ||||
| 39 | |||||
| 40 | my $array = Data::Perl::Collection::Array::MooseLike->new(qw/a b c d/); | ||||
| 41 | |||||
| 42 | my $scalar_context = $array->splice(0, 2); # removes and returns b | ||||
| 43 | |||||
| 44 | my @list_context = $array->splice(0, 2); # returns and removes (b, c) | ||||
| 45 | |||||
| 46 | =head1 DESCRIPTION | ||||
| 47 | |||||
| 48 | This class provides a wrapper and methods for interacting with an array. All | ||||
| 49 | methods are written to emulate/match existing behavior that exists with Moose's | ||||
| 50 | native traits. | ||||
| 51 | |||||
| 52 | =head1 DIFFERENCES IN FUNCTIONALITY | ||||
| 53 | |||||
| 54 | =over 4 | ||||
| 55 | |||||
| 56 | =item B<splice($args, ...)> | ||||
| 57 | |||||
| 58 | Just like Perl's builtin splice. In scalar context, this returns the last | ||||
| 59 | element removed, or undef if no elements were removed. In list context, this | ||||
| 60 | returns all the elements removed from the array. | ||||
| 61 | |||||
| 62 | This method requires at least one argument. | ||||
| 63 | |||||
| 64 | =back | ||||
| 65 | |||||
| 66 | =head1 SEE ALSO | ||||
| 67 | |||||
| 68 | =over 4 | ||||
| 69 | |||||
| 70 | =item * L<Data::Perl> | ||||
| 71 | |||||
| 72 | =item * L<Data::Perl::Role::Collection::Array> | ||||
| 73 | |||||
| 74 | =back | ||||
| 75 | |||||
| 76 | =head1 AUTHOR | ||||
| 77 | |||||
| 78 | Toby Inkster <tobyink@cpan.org> | ||||
| 79 | |||||
| 80 | =head1 COPYRIGHT AND LICENSE | ||||
| 81 | |||||
| 82 | This software is copyright (c) 2020 by Matthew Phillips <mattp@cpan.org>. | ||||
| 83 | |||||
| 84 | This is free software; you can redistribute it and/or modify it under | ||||
| 85 | the same terms as the Perl 5 programming language system itself. | ||||
| 86 | |||||
| 87 | =cut | ||||
| 88 | |||||
| 89 | __END__ |