use strict; use Devel::Size qw(total_size); my $x = 'a' x (2**30); print "Devel::Size = ".human(total_size($x))."\n"; open my $cmd, qq(tasklist /NH /FI "PID eq $$"|) or die; while (<$cmd>){ print qq(tasklist PID $$ = $1\n) if /(\S+\s\w{1,2}$)/} sub human{ my $size = shift; my @order= qw/Tb Gb Mb Kb byte/; if($size<1024){return"$size byte"} while ($size >= 1024){$size=$size/1024;pop @order;} return sprintf("%4.2f %2s", $size, (pop @order)); } __END__ Devel::Size = 1.00 Gb tasklist PID 37288 = 2.104.612 K #### use strict; use warnings; use Devel::Size qw(total_size); my $x; foreach my $order ( qw(20 24 30 32) ){ $x = 'a' x ( 2 ** $order ); print "\n\nsize of scalar 2**$order\n"; print "Devel::Size = ".human(total_size($x))."\n"; open my $cmd, qq(tasklist /NH /FI "PID eq $$"|) or die; while (<$cmd>){ print qq(tasklist PID $$ = $1\n) if /(\S+\s\w{1,2}$)/} } sub human{ my $size = shift; my @order= qw/Tb Gb Mb Kb byte/; if($size<1024){return"$size byte"} while ($size >= 1024){$size=$size/1024;pop @order;} return sprintf("%4.2f %2s", $size, (pop @order)); } __END__ size of scalar 2**20 Devel::Size = 1.00 Mb tasklist PID 19660 = 8.452 K size of scalar 2**24 Devel::Size = 16.00 Mb tasklist PID 19660 = 23.820 K size of scalar 2**30 Devel::Size = 1.00 Gb tasklist PID 19660 = 1.056.012 K size of scalar 2**32 Devel::Size = 4.00 Gb tasklist PID 19660 = 4.201.748 K