use strict; use Devel::Size qw(size total_size); sub mem_size { my($pkg, $type) = @_; die("mem_size(): unknown variable type '$type'\n") if $type !~ /^(?: HASH | ARRAY | SCALAR )\z/x; my $ret = 0; no strict 'refs'; for(values %{"${pkg}::"}) { $ret += ( $type eq 'SCALAR' ? size( ${ *$_{$type} } ) : total_size( *$_{$type} ) ) if defined *$_{$type}; } return $ret; } print "SCALAR mem usage in main:: is ", mem_size("main", "SCALAR"), $/; __output__ SCALAR mem usage in main:: is 2098