Devel-Size-Report
view release on metacpan or search on metacpan
example/size.pl view on Meta::CPAN
#!/usr/bin/perl -w
use strict;
BEGIN
{
use lib '../lib';
chdir 'example' if -d 'example';
}
use Devel::Size::Report qw(report_size);
use Scalar::Util qw/weaken/;
use IO::File;
use Math::BigFloat;
my $a = [ 8, 9, 7, [ 1,2,3, { a => 'b', size => 12.2, h => ['a'] }, 'rrr' ] ];
use Data::Dumper; print Dumper($a);
print report_size($a, { indend => "\t", left => '', total => undef,} ), "\n";
example/size.pl view on Meta::CPAN
print report_size(Math::BigFloat->new(1.2)),"\n";
my $FILE;
open($FILE, "size.pl") or die ("Cannot open size.pl: $!");
print report_size( $FILE, { total => '' } ), "\n";
print report_size( IO::File->new(), { total => '' } ), "\n";
print report_size( "a scalar", { total => '' } ), "\n";
print report_size( \"a scalar", { } ), "\n";
my $x = \"a scalar"; weaken($x);
print report_size( $x, { } ), "\n";
# these tw0 are actually different in size as Devel::Peek shows:
$a = [ 1,2 ];
print report_size( $a ), "\n";
my @a = (1,2);
print report_size( \@a ), "\n";
print report_size( sub { 3 < 5 ? 1 : 0; print "123"; 3; }), "\n";
$a = 1; my $code = sub { $a < 5 ? 1 : 0; print "123"; 3; };
t/00_basic.t view on Meta::CPAN
#!/usr/bin/perl -w
use Test::More;
use strict;
use Scalar::Util qw/weaken/;
BEGIN
{
$| = 1;
plan tests => 14;
chdir 't' if -d 't';
unshift @INC, '../blib/lib';
unshift @INC, '../blib/arch';
use_ok ('Devel::Size::Report');
}
t/00_basic.t view on Meta::CPAN
print "# IS_WEAK : ", SF_WEAK(),"\n";
print "# IS_RO : ", SF_RO(),"\n";
print "# IS_DUAL : ", SF_DUAL(),"\n";
is (Devel::Size::Report::_flags(v1.2.3), SF_RO());
my $a = 123;
my $x = \$a;
is (Devel::Size::Report::_flags($x), 0, 'ref to 123');
weaken ($x);
is (Devel::Size::Report::_flags($x), SF_WEAK(), 'weakened ref');
$x = \"123";
is (Devel::Size::Report::_flags($x), 0, 'ref to 123');
# this sometimes failes with "Modification of a read-only value attempted"
weaken ($x);
is (Devel::Size::Report::_flags($x), SF_WEAK(), 'weakened ref');
is (Devel::Size::Report::_flags("123"), SF_RO(), 'readonly scalar');
TODO: {
local $TODO = 'Do not have a way to detect magic yet';
is (Devel::Size::Report::_flags(substr("123",0,1)), SF_MAGIC(),
'magical scalar');
};
t/02_report.t view on Meta::CPAN
unshift @INC, '../blib/arch';
}
# import anything
use Devel::Size::Report qw/
report_size track_size element_type
entries_per_element
/;
use Devel::Size qw/size total_size/;
use Scalar::Util qw/weaken/;
my $x = "A string";
my $v = "V string";
my $y = "A much much longer string"; # should be at least 8 longer than $x for 64 bit!
my $z = "Some other long text here"; # length($z) == length($y)
my $elems = [ $x,$y,$z ];
my $nr = 123;
my $ref = \"1234";
my $vstring = v1.2.3;
my $ref_vstring = \v1.2.3;
t/02_report.t view on Meta::CPAN
$A = report_size( [ 1, 2 ], { head => '' } );
like ($A, qr/Array /, 'Array');
#############################################################################
# SCALAR references
$A = report_size( \"1234", { head => '' } );
like ($A, qr/Scalar Ref/, 'Scalar ref');
weaken($ref);
$A = report_size( $ref, { head => '' } );
like ($A, qr/Weak Scalar Ref/, 'Weak Scalar ref');
unlike ($A, qr/Read-Only.*Scalar Ref/i, 'But not RO');
like ($A, qr/Read-Only Scalar/, 'RO Scalar');
unlike ($A, qr/Weak.*Scalar [^R]/i, 'RO Scalar');
#############################################################################
# ARRAY references
$A = report_size( \ [ 8, 9 ], { head => '' } );
t/08_size.t view on Meta::CPAN
unshift @INC, '../blib/arch';
}
# import anything
use Devel::Size::Report qw/
report_size track_size element_type
entries_per_element
/;
use Devel::Size qw/size total_size/;
use Scalar::Util qw/weaken/;
use Array::RefElem qw/av_push/;
#############################################################################
# find out how large one single array ref is
my @size = track_size( [] );
my $array_size = $size[2];
print "# array size: $array_size\n";
# find out how big a single scalar is
@size = track_size( 1 );
( run in 1.609 second using v1.01-cache-2.11-cpan-65fba6d93b7 )