Devel-Optic
view release on metacpan or search on metacpan
},
"name" : "Devel-Optic",
"prereqs" : {
"configure" : {
"requires" : {
"ExtUtils::MakeMaker" : "0"
}
},
"runtime" : {
"requires" : {
"PadWalker" : "2.3",
"Ref::Util" : "0.204",
"Scalar::Util" : "0",
"Sub::Info" : "0.002",
"perl" : "5.010"
}
},
"test" : {
"requires" : {
"Test2::Plugin::NoWarnings" : "0.08",
"Test2::V0" : "0.000100"
Devel::Optic::Lens::Perlish::Constants:
file: lib/Devel/Optic/Lens/Perlish/Constants.pm
version: '0.015'
Devel::Optic::Lens::Perlish::Interpreter:
file: lib/Devel/Optic/Lens/Perlish/Interpreter.pm
version: '0.015'
Devel::Optic::Lens::Perlish::Parser:
file: lib/Devel/Optic/Lens/Perlish/Parser.pm
version: '0.015'
requires:
PadWalker: '2.3'
Ref::Util: '0.204'
Scalar::Util: '0'
Sub::Info: '0.002'
perl: '5.010'
resources:
bugtracker: https://github.com/kanatohodets/Devel-Optic/issues
homepage: https://github.com/kanatohodets/Devel-Optic
repository: https://github.com/kanatohodets/Devel-Optic.git
version: '0.015'
x_generated_by_perl: v5.28.1
Makefile.PL view on Meta::CPAN
"ABSTRACT" => "Production safe data inspector",
"AUTHOR" => "Ben Tyler <btyler\@cpan.org>",
"CONFIGURE_REQUIRES" => {
"ExtUtils::MakeMaker" => 0
},
"DISTNAME" => "Devel-Optic",
"LICENSE" => "perl",
"MIN_PERL_VERSION" => "5.010",
"NAME" => "Devel::Optic",
"PREREQ_PM" => {
"PadWalker" => "2.3",
"Ref::Util" => "0.204",
"Scalar::Util" => 0,
"Sub::Info" => "0.002"
},
"TEST_REQUIRES" => {
"Test2::Plugin::NoWarnings" => "0.08",
"Test2::V0" => "0.000100"
},
"VERSION" => "0.015",
"test" => {
"TESTS" => "t/*.t t/lens-perlish/*.t"
}
);
my %FallbackPrereqs = (
"PadWalker" => "2.3",
"Ref::Util" => "0.204",
"Scalar::Util" => 0,
"Sub::Info" => "0.002",
"Test2::Plugin::NoWarnings" => "0.08",
"Test2::V0" => "0.000100"
);
unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) {
delete $WriteMakefileArgs{TEST_REQUIRES};
- O(1), not O(n) (or worse)
I'd like to avoid globs or matching syntax that might end up iterating over
unbounded chunks of a data structure. Traversing a small, fixed number of keys
in 'parallel' sounds like a sane extension, but anything which requires
iterating over the entire set of hash keys or array indicies is likely to
surprise when debugging systems with unexpectedly large data structures.
# SEE ALSO
- [PadWalker](https://metacpan.org/pod/PadWalker)
- [Devel::Probe](https://metacpan.org/pod/Devel::Probe)
name = Devel-Optic
author = Ben Tyler <btyler@cpan.org>
license = Perl_5
copyright_holder = Ben Tyler
copyright_year = 2019
[Prereqs]
perl = 5.010
PadWalker = 2.3
Ref::Util = 0.204
Scalar::Util = 0
Sub::Info = 0.002
[Prereqs / TestRequires]
Test2::V0 = 0.000100
Test2::Plugin::NoWarnings = 0.08
[PkgVersion]
[GithubMeta]
lib/Devel/Optic.pm view on Meta::CPAN
use strict;
use warnings;
use Carp qw(croak);
use Scalar::Util qw(looks_like_number);
use Ref::Util qw(is_ref is_arrayref is_hashref is_scalarref is_coderef is_regexpref);
use Sub::Info qw(sub_info);
use PadWalker qw(peek_my);
use Devel::Optic::Lens::Perlish;
use constant {
DEFAULT_SCALAR_TRUNCATION_SIZE => 256,
DEFAULT_SCALAR_SAMPLE_SIZE => 64,
DEFAULT_SAMPLE_COUNT => 4,
};
sub new {
lib/Devel/Optic.pm view on Meta::CPAN
}
if ($subject eq "") {
return '"" (len 0)';
}
$subject = $$subject if is_scalarref($subject);
my $scalar_truncation_size = $self->{scalar_truncation_size};
my $len = length $subject;
# simple scalars we can truncate (PadWalker always returns refs, so
# this is pretty safe from accidentally substr-ing an array or hash).
# Also, once we know we're dealing with a gigantic string (or
# number...), we can trim much more aggressively without hurting user
# understanding too much.
if ($len <= $scalar_truncation_size) {
return sprintf(
"%s%s (len %d)",
$ref ? "$ref " : "",
$subject,
lib/Devel/Optic.pm view on Meta::CPAN
surprise when debugging systems with unexpectedly large data structures.
=back
=head1 SEE ALSO
=over 4
=item *
L<PadWalker>
=item *
L<Devel::Probe>
=back
=head1 AUTHOR
Ben Tyler <btyler@cpan.org>
( run in 0.951 second using v1.01-cache-2.11-cpan-05444aca049 )