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 )