Memory-Process

 view release on metacpan or  search on metacpan

Process.pm  view on Meta::CPAN

package Memory::Process;

use base qw(Memory::Usage);
use strict;
use warnings;

use Readonly;

# Constants.
Readonly::Scalar our $EMPTY_STR => q{};

our $VERSION = 0.06;

# Record.
sub record {
	my ($self, $message, $pid) = @_;
	if (! defined $message) {
		$message = $EMPTY_STR;
	}
	return $self->SUPER::record($message, $pid);
}

# Print report to STDERR.
sub dump {
	my $self = shift;
	return print STDERR scalar $self->report;
}

# Get report.
sub report {
	my $self = shift;
	my $report = $self->SUPER::report;
	my @report_full = split m/\n/ms, $report;
	my @report = ();
	if (@report_full > 2) {
		@report = ($report_full[0], $report_full[-2], $report_full[-1]);
	};
	my $report_scalar = (join "\n", @report);
	if ($report_scalar ne $EMPTY_STR) {
		$report_scalar .= "\n";
	}
	return wantarray ? @report : $report_scalar;
}

# Reset records.
sub reset {
	my $self = shift;
	@{$self} = ();
	return;
}

# Get state.
sub state {
	my $self = shift;
	return [@{$self}];
}

1;

__END__

=pod

=encoding utf8

=head1 NAME

 Memory::Process - Perl class to determine actual memory usage.

=head1 SYNOPSIS

 use Memory::Process;

 my $m = Memory::Process->new(%params);
 $m->dump;
 $m->record($message, $pid);
 my @report = $m->report;
 my $report = $m->report;
 $m->reset;
 $m->state;

=head1 METHODS

=head2 C<new>

 my $m = Memory::Process->new(%params);

Constructor.

Returns instance of object.

=head2 C<dump>



( run in 2.185 seconds using v1.01-cache-2.11-cpan-71847e10f99 )